1

我应该构建一个小而简单的分布式(或者更确切地说是联网的)Web 应用程序,其中节点可以直接相互发送消息。我不知道如何解决这个问题。我知道如何通过套接字编程和桌面 UI 构建一个简单的分布式应用程序,而且我知道如何制作一个简单的我应该说是传统的服务器 - 客户端 Web 应用程序,但是通过使用 Web 技术来制作一个分布式 Web 应用程序......好吧,我没有线索。

我们的想法是拥有一个至少有一个服务器和 3 个以上客户端节点的小型系统。客户端节点应该能够相互交换消息,也应该能够与服务器交换消息。客户端必须能够在浏览器上显示交换的消息。我已经从这里阅读了教程、指南甚至一些相关的问题,关于如何做到这一点,但我不只是明白。我什至不知道从哪里开始。

我应该尝试使用 Django 和 AJAX 吗?对他们来说,我再次坚持认为流量仅在服务器和客户端之间,而不是在客户端之间。

我已经坚持了一个星期了,我变得非常绝望。有什么提示吗?任何帮助是极大的赞赏。

谢谢。

4

3 回答 3

2

您可以使用zeroMQ

是一个高性能异步消息库,旨在用于可扩展的分布式或并发应用程序。它提供了一个消息队列,但与面向消息的中间件不同,ØMQ 系统可以在没有专门的消息代理的情况下运行。该库旨在具有熟悉的套接字样式 API。

于 2012-09-13T20:30:12.010 回答
1

基本上你应该设置你的服务器监听传入的客户端连接。然后,当它收到来自其中一个客户端的消息时,它应该将消息发送给所有连接的客户端。

困难的部分是您需要保持与每个客户端的开放连接。如果您使用 Django 之类的 Web 应用程序框架,这会有些复杂。

您也可以自己对服务器进行编程。它在概念上比使用 Django 或 Ajax 更清晰,并且是一个很好的学习练习。使用 python SocketServer库。该库中的示例已经包含聊天客户端和服务器。

或者,您可以使用Tornado网络服务器和websockets进行尝试。Tornado 是一个高性能的异步网络服务器。Websockets 是相当新的 javascript 功能,允许您保持从服务器到客户端的永久连接打开。

于 2012-09-13T20:12:07.077 回答
1

asyncoro是一个用于异步、并发、分布式、网络编程的 Python 框架,支持消息传递和通道,以便于点对点通信。如有必要,您还可以使用套接字来交换消息。示例目录中的文件 'remote_coro_*.py' 和 'remote_channel_*.py' 应该可以帮助您开始。

免责声明:我开发了 asyncoro。

于 2012-09-14T14:31:44.580 回答