我正在构建一组由多个客户端和一个服务器组成的程序。
客户端经常将小包数据推送到服务器,服务器会对信息进行验证(如果数据无效则返回错误),并处理接收到的信息。然后,该信息可能会触发事件,客户端将订阅这些事件,从而允许立即(或尽可能接近)通知客户端(以及少量数据)。
我对如何做到这一点有一些想法,但我试图避免创建自己的协议,主要是因为我确信这将花费很长时间,而且我可能会犯一些错误。所以我想知道是否有任何现有的协议可以实现到我的系统中来提供这样的功能。
客户端的数量最初会非常少,但会随着时间的推移而增长,可能包括 1000 个客户端(有自己的订阅),以及几个前端服务器(每个处理订阅的子集)来回解析信息后端服务器以提高功能。
因此,如果有人知道实现这些要求和功能的任何现有协议,那就太好了。
编辑
我目前正在研究 XMPP 协议和 JXTA 协议套件(供参考,并用另一种语言实现)。两者看起来都很好并且提供了必要的连接性,但是我没有机会在我的环境中测试它们中的每一个,或者它们是否适合我正在尝试的东西。
此外,一些网络客户端将在本地网络之外并通过 WAN 运行。安全性不是什么大问题,但我需要考虑到延迟的增加,以及可能阻止某些端口或传输协议的防火墙规则(托管应用程序和 ISP 防火墙的本地连接)(我读过一些文字,说一些 ISP 阻止 UDP 数据包,但不确定这有多广泛。我可以在家里、办公室、手机、朋友家等地方做,但我自己还没有体验过)。