我有这段代码:
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
答案 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');
我不确定这是一个错误还是预期的行为,因此没有打开问题。如果有人可以确认这是一个错误,我很乐意报告并跟踪该错误。