socket.io查询参数不起作用

我有这个代码:

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

它用于将查询parameter passing给以下代码作为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 …

请帮忙!

顺便说一句我正在使用socket.io 1.1.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_nfy.emit(channel + ':' + message.event, message.data); var chatNsp = io_cht.of('/chat'); 

我不确定这是一个错误还是有意的行为,因此没有提出任何问题。 如果有人可以确认这是一个错误,我会很乐意报告和跟踪这个错误。