0

我将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 tcp 端口 3191 上的 zmq 服务器获取数据并将其转发到 socket.io http 端口 2939,然后通过使用 html 页面连接到端口 2939 在浏览器上获取数据。我不希望在客户端使用 zmq,因为 socket.io 非常适合该游戏。

还有一个单独的 socket.io 连接,即 io.sockets.on 正在工作,但在 zmq 套接字内它失败了!

任何人

紫山

4

1 回答 1

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

于 2013-08-28T23:41:17.670 回答