我将socketio放在zmq中,但下面的代码不行 不确定我做错了什么
var io = require('socket.io').listen(2939);
var zmq = require('zmq');
var socket = zmq.socket('sub');
console.log("Connecting to Currency Stream....");
socket.subscribe("");
socket.on('message', function (data){
//console.log(data.toString());
io.sockets.on('connection', function(socket){
console.log("In socket.io");
console.log(data.toString());
socket.emit("live_rates",
{date: data[0], time: data[1],
open: data[2], high: data[3],
low: data[4], close: data[5]});
socket.emit("news", {hello: 'world'});
console.log("emitted");
});
});
socket.connect('tcp://localhost:3191');
io.socket.on中的代码未运行,握手成功,因为我可以在日志窗口中看到。当我把代码放在zmq中时(取消注释//console.log(data.toString());) 它正在显示数据。
我在这里真正做的是从zmq服务器上获取zmq tcp端口3191上的数据并将其转发到socket.io http端口2939,然后通过使用html页面连接到端口2939来获取浏览器上的数据。我不希望在客户端使用zmq,因为socket.io对于该游戏非常强大。
也是一个单独的socket.io连接,即io.sockets.on正在工作,但在zmq套接字内它失败了!
任何一个
紫衫
答案 0 :(得分:0)
使用io.sockets.emit而不是socket.emit解决了这个问题。 io.socket.on现在位于zmq之外。
我怀疑在使用zmq函数时使用socket.emit时socketio回调现在正在响应。
从这篇博客文章中得到了线索 https://groups.google.com/forum/#!msg/socket_io/Vi0uWeHsj_0/JEOcXAc-pn8J