实时网页聊天应用的架构

2 投票
1 回答
2701 浏览
提问于 2025-04-20 17:10

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

在构建这个应用后,我意识到了一些事情:

  1. 后端架构其实就是一个简单的CRUD(增删改查)应用,加上发布/订阅的功能。你可以在这里了解更多关于发布/订阅系统的信息。还有一个用Ruby on Rails做的简单聊天应用,可以在这里找到。你可以参考一下,它的架构设计得很好。
  2. 在这个应用的初期,你应该像关注最后的步骤一样关注上面列出的功能。如果一开始设计得好,最后的步骤就会顺利进行!:-)
  3. 如果你想了解并发编程,做一些很酷的事情,我建议你尝试实现一些在这里讨论过的框架。

如果你有任何问题,请告诉我!

撰写回答