socket.io连接事件永远不会触发

时间:2018-03-14 14:44:53

标签: socket.io

服务器

var io = require('socket.io'),
UUID = require('node-uuid'),
gameport = 3000;

var db = {
    waiting_clients: []
};

var logic = {

};

var sio = io.listen(gameport);

sio.sockets.on('connection', function(socket){
    var client = {
        id: UUID()
    };

    socket.emit('news', client);

    console.log(client.id);

    db.waiting_clients.push(client);
});

测试客户:

var net = require('net');
var client = net.connect({port: 3000},
function(e) { //'connect' listener
  console.log('client connected');
  client.end();
});

在测试客户端控制台中,它显示“客户端已连接”。但是服务器控制台中没有输出

1 个答案:

答案 0 :(得分:1)

您必须使用socket.io客户端连接到socket.io服务器。您的代码显示您正在尝试与socket.io服务器建立通用TCP连接。那样不行。将建立最低级别的连接,但是初始协议握手将失败,socket.io服务器将断开连接,您将永远不会获得连接事件。

Socket.io有自己的建立在webSocket之上的连接方案,它建立在HTTP之上,建立在TCP之上。

因此,要连接到socket.io服务器,必须使用同时运行socket.io和webSocket协议的socket.io客户端,而不是普通的TCP套接字。

相关问题