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

时间:2017-05-06 12:22:04

标签: socket.io

这是我的代码:

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

如果我删除查询,我可以连接到套接字。我哪里错了?

1 个答案:

答案 0 :(得分:0)

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

我怀疑问题出在您的服务器端代码中。以下是我使用客户端代码的示例:

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中使用的示例。

相关问题