我想在 python 中使用 web.py
创建一个实时网络聊天应用程序。问题是我不知道如何“架构”或设计这样的应用程序。
我想实现这个应用程序的方式如下:
- 用户登录应用。
- 该应用连接到一个 Controller ,该 Controller 具有用于推送新消息的推送服务和用于存储新消息的队列服务。
- 当用户发送消息时,应用会通过 ajax 调用将消息发送到 Controller ,然后 Controller 将消息存储在队列中。
- 然后 Controller 通过推送服务将队列中的消息发送给目标用户。
但是我发现这是一个非常糟糕的设计,因为我看到这里发送了很多 ajax 请求。我真的不知道这样的服务是否有更好的设计或架构。那么您能否指出实时聊天应用程序的正确设计?
最佳答案
亚历克斯,
这是一个可以理解的问题,我最近在构建自己的消息应用程序时想到了这个问题。这是我分解应用程序功能的方式:
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 应用程序与发布/订阅功能的简单组合。您可以阅读有关发布/订阅系统的更多信息 here 。 Here是一个使用 Ruby on Rails 构建的简单聊天应用程序。你可以引用一下,它的架构非常好。
- 您应该在应用程序开始时和最终时一样考虑上述功能中列出的最后步骤。如果你一开始就设计得很好,最后的步骤就会水到渠成! :-)
- 如果您想了解并发并做一些非常酷的事情,我建议尝试实现 here 中讨论的一些框架。 .
如果您有任何疑问,请告诉我!
关于python - 实时网络聊天应用程序的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25750100/