【问题标题】:The architecture of a real-time web chat app实时网络聊天应用程序的架构
【发布时间】:2014-11-03 04:45:18
【问题描述】:
我想在 python 中使用web.py 创建一个实时网络聊天应用程序。问题是我不知道如何“架构”或设计这样的应用程序。
我想实现这个应用程序的方式如下:
- 用户登录应用。
- 应用程序连接到一个控制器,该控制器具有一个推送服务来推送新消息和一个队列服务来存储新消息。
- 当用户发送消息时,应用通过 ajax 调用将消息发送到控制器,控制器将消息存储在队列中。
- 然后控制器通过其推送服务将队列中的消息发送给目标用户。
但是我看到这是一个非常糟糕的设计,因为我看到这里发送了很多 ajax 请求。我真的不知道这样的服务是否有更好的设计或架构。那么,您能否指出实时聊天应用的正确设计?
【问题讨论】:
标签:
python
ajax
web
chat
web.py
【解决方案1】:
亚历克斯,
这是一个可以理解的问题,我最近在构建自己的消息传递应用程序时想到了这个问题。这是我分解应用程序功能的方式:
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 应用程序与发布/订阅功能的简单混合。您可以在 pub/sub 系统 here 上阅读更多信息。 Here 是一个使用 Ruby on Rails 构建的简单聊天应用程序。您可以查看它以供参考,它的架构非常好。
- 您应该在此应用程序的开头和结尾一样考虑上述功能中列出的最后步骤。如果你一开始就很好地构建它,最后的步骤就会到位! :-)
- 如果您想了解并发并做一些非常酷的事情,我建议您尝试实现here 讨论的一些框架。
如果您有任何问题,请告诉我!