socket.io查询参数不起作用

时间:2014-09-11 21:38:59

标签: javascript node.js socket.io

我有这段代码:

var ss = io('/secure', { query: 'token='+string });

用于将查询参数传递给可通过以下代码作为socket.handshake.query访问的服务器:

io.of('/secure').use(function(socket, next){
    // ***
    console.log( socket.handshake.query );


    // validate token

    next();
});

但现在它无法正常工作,console.log的输出不包含令牌属性:

{ EIO: '3', transport: 'polling', t: '1410465157747-0' }

我还尝试将语法更改为我在其他地方在线看到的语法...

var ss = io('/secure', { query: { 'token': string } });

并且这不会将查询属性添加到socket.handshake.query ......

请帮忙!

btw我使用的是socket.io 1.1.0

1 个答案:

答案 0 :(得分:0)

我在socket.io最新版本(v 1.3.6)上发现了同样的问题 - 对于第二个连接,query没有被发送。

我将socket.io用于两个目的,即聊天和通知。两者都在同一个端口上运行。由于这是两个独立的服务,我在不同的端口上启动了两个独立的服务器 - 每个服务一个。从那时起,这个问题就没有出现了。

试试这个:所以如果你有多个服务,请尝试将它们分成不同的端口。

var http_nfy = require('http').Server(app).listen(6001);    
var io_nfy = require('socket.io')(http_nfy);
var http_cht = require('http').Server(app).listen(6002);    
var io_cht = require('socket.io')(http_cht);

然后我以不同的方式使用了这两个io

io_nfy.emit(channel + ':' + message.event, message.data);
var chatNsp = io_cht.of('/chat');

我不确定这是一个错误还是预期的行为,因此没有打开问题。如果有人可以确认这是一个错误,我很乐意报告并跟踪该错误。