NodeJS ZeroMQ-当生产者准备好在连接后发送消息时
NodeJS ZeroMQ - When producer is ready to send message after connection?
我对zeromq支持的模式做了一些小的研究。我想描述PUB/SUB模式的问题,但可能我在最近的项目中也发现了PUSH/PULL模式的问题。我使用NodeJS zeromq实现。
我准备了两个例子(server.js和client.js)。我发现每次重新启动服务器时,来自server.js的第一条消息都会丢失(消息每1秒发送一次)。client.js没有得到第一条消息。这可能是由于发送消息前时间过短造成的。当我在一段时间后(例如1秒)开始发送消息时,一切都很好。我认为zmq需要一些时间来初始化发布服务器和订阅服务器之间的连接。
我想知道生产者(服务器)何时准备好为订阅的客户端发送消息。如何获得这些信息?
我不明白为什么连接并订阅消息的client.js没有得到它,因为服务器在重新启动后还没有准备好支持订阅。
也许它是这样设计的。
server.js:
var zmq = require('zmq');
console.log('server zmq: ' + zmq.version);
var publisher = zmq.socket('pub');
publisher.bindSync("tcp://*:5555");
var i = 0;
var msg = "get_status OK ";
function sendMsg () {
console.log(msg + i);
publisher.send(msg + i);
i++;
setTimeout(sendMsg, 1000);
}
sendMsg();
process.on('SIGINT', function() {
publisher.close();
process.exit();
});
client.js:
var zmq = require('zmq');
console.log('client zmq: ' + zmq.version);
var subscriber = zmq.socket('sub');
subscriber.subscribe("get_status");
subscriber.on('message', function(data) {
console.log(data.toString());
});
subscriber.connect("tcp://127.0.0.1:5555");
process.on('SIGINT', function() {
subscriber.close();
process.exit();
});
在节点zmq-lib repo中,您已经声明了支持的监视事件。订阅它将允许您监视您的连接,在本例中为accept
事件。但是,不要忘记,您还必须调用套接字上的monitor()
函数来激活监视。
你最终应该得到这样的东西:
var publisher = zmq.socket('pub');
publisher.on('accept', function(fd, ep) {
sendMsg();
});
publisher.monitor(100, 0);
publisher.bindSync("tcp://*:5555");
相关文章:
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 如果没有互联网连接,Android WebView离线消息
- 使用chrome扩展,如何使用长寿命连接(端口)将消息从后台脚本传递到内容脚本
- Chrome 消息传递.未捕获错误:连接到扩展时出错
- Jquery 移动错误消息,当没有互联网连接加载谷歌地图
- Jquery移动检查时没有互联网连接显示错误消息,而不是加载谷歌地图
- nodejs + WebSockets - 拒绝带有消息的连接
- LinkedIn向连接发送消息
- 如何将自定义消息处理程序与 Strophe 连接
- 如何使用html-jquery或java脚本在互联网连接不可用时显示对话框消息
- 一种管理WebSocket的方法,以便向所有连接的用户发送管理消息
- 断开网络连接时出现消息(SamsungSmart电视应用程序)
- 如何允许表单元素具有多个类,并为错误消息连接/切片
- 如何在页面关闭时可靠地运行代码(例如,网站聊天中的“断开连接”消息)
- Node.js/Sockets-用户连接,它加载以前的消息,但它将消息加载到所有其他聊天用户,而不是刚刚连接的用户
- NodeJS ZeroMQ-当生产者准备好在连接后发送消息时
- 如何从连接的Android设备查看Cordova日志消息?
- 如何使用Java服务器发送消息到特定的websocket连接
- 当没有互联网连接时显示警告消息
- 使用webSocket向特定的连接用户发送消息