Python 实时web聊天应用程序的体系结构

Python 实时web聊天应用程序的体系结构,python,ajax,web,chat,web.py,Python,Ajax,Web,Chat,Web.py,我想用python中的web.py创建一个实时网络聊天应用程序。问题是我不知道如何“构建”或设计这样的应用程序 我认为实现此应用程序的方式如下: 用户登录到应用程序 该应用程序连接到一个控制器,该控制器有一个推送服务来推送新消息,还有一个队列服务来存储新消息 当用户发送消息时,应用程序通过ajax调用将消息发送给控制器,控制器将消息存储在队列中 然后,控制器通过其推送服务将队列中的消息发送给目标用户 然而,我看到这是一个非常糟糕的设计,因为我看到这里发送了很多ajax请求。我真的不知道这样的

我想用python中的
web.py
创建一个实时网络聊天应用程序。问题是我不知道如何“构建”或设计这样的应用程序

我认为实现此应用程序的方式如下:

  • 用户登录到应用程序
  • 该应用程序连接到一个控制器,该控制器有一个推送服务来推送新消息,还有一个队列服务来存储新消息
  • 当用户发送消息时,应用程序通过ajax调用将消息发送给控制器,控制器将消息存储在队列中
  • 然后,控制器通过其推送服务将队列中的消息发送给目标用户
然而,我看到这是一个非常糟糕的设计,因为我看到这里发送了很多ajax请求。我真的不知道这样的服务是否有更好的设计或架构。你能告诉我实时聊天应用的正确设计吗?

Alex

这是一个可以理解的问题,我最近在构建自己的消息传递应用程序时考虑过这个问题。这是我分解应用程序功能的方式:

       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应用程序与发布/订阅功能的简单混合。你可以阅读更多关于发布/订阅系统的信息。”这是一个使用RubyonRails构建的简单聊天应用程序。您可以查看它以供参考,它的架构非常好
  • 您应该在本应用程序开始时和结束时一样考虑上述功能中列出的最后步骤。如果您在一开始就设计好了,那么最后的步骤就会到位!:-)
  • 如果您想了解并发性并做一些非常酷的事情,我建议您尝试实现讨论的一些框架
  • 如果您有任何问题,请告诉我