【发布时间】:2013-02-23 23:43:50
【问题描述】:
有一个应用程序需要向一堆客户端发送消息。客户端是用户计算机上的应用程序,这些应用程序有时一次运行数天。服务器要么有新的指令,要么没有。有时两条新指令之间有 10 分钟的间隔,有时是一小时,有时是一天。消息是固定长度的。
实现这一点的最佳方法是什么?我应该让客户端每 10 秒轮询一次服务器吗?每次新客户端连接时我是否应该在服务器上创建一个新线程,并保持连接直到有新指令,然后将其发送给客户端并让客户端创建一个新连接?
或者我应该将消息推送给客户端吗?我正在考虑如何做到这一点,我想出了这个: 服务器服务器既是服务器又是客户端。当客户端握手时,它会将其地址提供给服务器。然后服务器开始充当客户端(显然,还充当服务器以使其他客户端能够连接),并与客户端保持连接。客户端就像服务器一样,等待消息。
最后一个似乎相当复杂。做这个的最好方式是什么?来自服务器的新消息(“指令”)应该在服务器“拥有”它们之后至少 15 秒到达客户端。
顺便说一句,服务器应用程序将在 Windows 上运行。我不确定的客户,但让我们假设多平台。服务器和客户端应用程序都是用 Python 编写的。
感谢您的宝贵时间。
【问题讨论】:
-
或许xmpp协议能给你一些思路? (en.wikipedia.org/wiki/XMPP)
-
@thebjorn XMPP 对于我正在做的事情似乎有点矫枉过正,我想。但我过去曾用它来通过互联网进行交流。
标签: sockets