Socket.IO客户端无法发送握手参数

Socket.IO客户端无法发送握手参数

问题描述:

这里是我的代码:Socket.IO客户端无法发送握手参数

var socket = require('socket.io-client')('http://127.0.0.1:3000/printers', { 
    query: "shop=" + "123456", 
    transports: ["websocket"] 
}); 

如果我删除的查询,我可以连接到插座。我错在哪里?

您的客户端代码似乎没有任何问题。我可以通过复制和粘贴代码进行连接。

我怀疑问题出在你的服务器端代码中。这里是我与你的客户端代码中使用的例子:

var http = require('http'); 
var io = require('socket.io'); 

var server = http.createServer(function(req,res){ 
    res.writeHead(200); 
    res.end('Hello, World!\n'); 
}); 

server.listen(80); 

var socket = io.listen(server); 

socket.use(function(socket, next){ 
    console.log("Query: ", socket.handshake.query); 

    if (socket.handshake.query.shop == '123456') { 
     next(); 
    } 

    next(new Error('You cannot use that shop')); 
}); 

socket.on('connection', function(client) { 
    console.log('New Connection'); 
}); 

我能够获得在“socket.use”功能查询数据。如果我不调用next()函数,客户端将永远不会收到服务器已收到响应并已连接的消息。

我建议检查此thread中使用的示例。

+0

如果这不能解决您的问题,可否请您发布更多的代码。 –

+0

我发现问题是关于最新版本的Socket.IO客户端。我降级到1.4.7版本,它的工作。 – Burak