方法
我正在使用ZeroMq构建一个异步IM/chat应用程序,作为一个学习练习,使用以下方法。
服务器使用两个与lbbroker.java类似的路由器套接字,从incoming读取和写入outgoing,同时操作信封以传递给预定的接收方。
客户端使用socket.setIdentity()设置唯一标识,并使用拉和推套接字代替REQ/REP异步发送和接收聊天消息。我已经构建并测试了代码,一切看起来都很好。

问题
萨利变得无法联系,如果她断开连接,然后重新连接,她不能再接收聊天信息。在调试服务器之后,我确认它确实是用正确的信封发送消息给sally。我还使用outgoing.setRouterMandatory(true)来确保服务器不会删除不可寻址的消息,但不会引发错误。
发布于 2013-09-23 16:23:44
经过进一步的研究,虽然推挽套接字与路由器一起工作,但根据ZeroMq规范,它们不是有效的套接字组合。
客户端的经销商套接字是一种更好的方法。经销商支持双向消息传输,基本上做推拉的工作,但只有一个套接字。
我开始了一个讨论这个问题的文章,它包含了一些使用经销商的基于代理模式的示例代码。
https://stackoverflow.com/questions/18048951
复制相似问题