【发布时间】:2013-09-08 20:17:57
【问题描述】:
我尝试使用 ZMQ 套接字编写游戏服务器。服务器使用 ZMQ_REP 套接字,客户端使用 ZMQ_REQ 套接字。
这仅在连接一个客户端时有效。如果我连接第二个客户端,那么服务器和第一个客户端之间的通信就会中断。
哪种服务器客户端模式适用于一台服务器和多个客户端?
【问题讨论】:
-
对于一个游戏,您可能需要请求-回复和发布-订阅。您将使用长时间运行的 pub-sub 会话让服务器将全局状态更新推送到客户端,并且您将使用短暂的 req-rep 客户端来传输玩家操作并立即获得答案。 (免责声明:我从未真正编写过多人游戏,这更像是基于 0MQ 文档的直觉。)
-
同样通过文档,我不明白这是怎么发生的:“如果我连接第二个客户端,那么服务器和第一个客户端之间的通信就会中断。”它们强烈暗示
ZMQ_REP套接字上的传入请求已排队,并且服务器最终会在假设它没有过载的情况下到达所有这些请求。您可能希望显示一些代码,说明您实际在做什么以及您发现第一个客户端断开连接的位置。 -
@millimoose 使用异步 REQ/REP,由于其阻塞特性,同步对于实际应用来说太脆弱了。
-
@raffian 您可以通过使用专用于 REQ/REP 的不同线程来克服阻塞性质。您还可以按照 0MQ 指南中的说明轮询多个套接字。
标签: zeromq