python - 实时网络聊天应用程序的架构

标签 python ajax web chat web.py

我想在 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)

构建此应用程序后我意识到的一些事情是:

  1. 后端架构是简单 CRUD 应用程序与发布/订阅功能的简单组合。您可以阅读有关发布/订阅系统的更多信息 hereHere是一个使用 Ruby on Rails 构建的简单聊天应用程序。你可以引用一下,它的架构非常好。
  2. 您应该在应用程序开始时和最终时一样考虑上述功能中列出的最后步骤。如果你一开始就设计得很好,最后的步骤就会水到渠成! :-)
  3. 如果您想了解并发并做一些非常酷的事情,我建议尝试实现 here 中讨论的一些框架。 .

如果您有任何疑问,请告诉我!

关于python - 实时网络聊天应用程序的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25750100/

相关文章:

jquery - 通过 jQuery 以 JSON 形式访问 google 驱动器

css - 平滑地显示 MathJax 方程,并且仅在完全呈现后显示

python - 使用 Python 2.7 在 Windows 上运行 Scapy

python - 使用 html5lib 将任何 HTML 解析为 XML

python - How to do a bitwise NOR Gate in Python(编辑 python 数学为我工作)

javascript - 选择下拉菜单项后获取输入值

python - tf.layers.dense 如何创建inputs.kernel 权重矩阵?

javascript - Rails 4,JS ERB 响应呈现 application.html 而不是指定的部分

html - 如何在 div 旁边对齐导航栏?

javascript - JavaScript 函数错误