socket.io在zmq函数内部不起作用

时间:2013-08-27 16:31:14

标签: zeromq socket.io

我将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套接字内它失败了!

任何一个

紫衫

1 个答案:

答案 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