实时网页聊天应用的架构
我想用 web.py
在 Python 中创建一个实时网页聊天应用。问题是我不知道该如何“架构”或设计这样一个应用。
我打算这样实现这个应用:
- 用户登录到应用。
- 应用连接到一个控制器,这个控制器有一个推送服务,用来推送新消息,还有一个队列服务,用来存储新消息。
- 当用户发送消息时,应用通过 ajax 调用把消息发送给控制器,控制器把消息存储在队列中。
- 然后,控制器通过它的推送服务把队列中的消息发送给目标用户。
不过我觉得这个设计很糟糕,因为这里有很多 ajax 请求。我真的不知道有没有更好的设计或架构来实现这样的服务。所以你能帮我指点一下实时聊天应用的正确设计吗?
1 个回答
2
亚历克斯,
这个问题很容易理解,最近我在自己做一个消息应用的时候也想过这个问题。我是这样分析这个应用的功能的:
User registration
User authentication
Adding a new friend by username
Approving a friend
Messaging with a friend in list (Of course)
Shows online and offline users
Runs a background service in order to get messages even when the application is closed.
Uses notification area when a new message is received.
Quiting the application(kills the background service)
在构建这个应用后,我意识到了一些事情:
- 后端架构其实就是一个简单的CRUD(增删改查)应用,加上发布/订阅的功能。你可以在这里了解更多关于发布/订阅系统的信息。还有一个用Ruby on Rails做的简单聊天应用,可以在这里找到。你可以参考一下,它的架构设计得很好。
- 在这个应用的初期,你应该像关注最后的步骤一样关注上面列出的功能。如果一开始设计得好,最后的步骤就会顺利进行!:-)
- 如果你想了解并发编程,做一些很酷的事情,我建议你尝试实现一些在这里讨论过的框架。
如果你有任何问题,请告诉我!