提问者:小点点

节点js-Socket.io-client没有连接到socket.io服务器


我正在尝试使用以下代码连接到socket.io客户端:

服务器:

// Load requirements
var http = require('http'),
    io = require('socket.io');

// Create server & socket
var server = http.createServer(function(req, res){

    // Send HTML headers and message
    res.writeHead(404, {'Content-Type': 'text/html'});
    res.end('<h1>Aw, snap! 404</h1>');
});
server.listen(8080);
io = io.listen(server);

// Add a connect listener
io.sockets.on('connection', function(socket) {

    console.log('Client connected.');

    // Disconnect listener
    socket.on('disconnect', function() {
        console.log('Client disconnected.');
    });
});

客户:

console.log('1');

// Connect to server
var io = require('socket.io-client')
var socket = io.connect('localhost:8080', {reconnect: true});

console.log('2');

// Add a connect listener
socket.on('connect', function(socket) {
    console.log('Connected!');
});

console.log('3');

我没有得到连接控制台日志或客户端连接控制台日志,我不知道为什么!代码示例取自发布的另一个问题:链接,我没有看到任何问题的解决方案……


共3个答案

匿名用户

使用相同版本的socket io客户端和服务器。它将完美地工作。

匿名用户

您还需要添加带有路径的协议。

变化

var socket = io.connect('localhost:8080', {reconnect: true});

var socket = io.connect('http://localhost:8080', {reconnect: true});

匿名用户

假设您使用的是大于1.0的socket.io版本,请在服务器上更改以下内容:

// Add a connect listener
io.sockets.on('connection', function(socket) {

    console.log('Client connected.');

    // Disconnect listener
    socket.on('disconnect', function() {
        console.log('Client disconnected.');
    });
});

对此:

// Add a connect listener
io.on('connection', function(socket) {

    console.log('Client connected.');

    // Disconnect listener
    socket.on('disconnect', function() {
        console.log('Client disconnected.');
    });
});

请参阅此处的socket.io留档参考。

您不希望只在已连接的套接字上侦听此事件。您希望在任何套接字上侦听此事件,即使是新创建的套接字。

此外,在互联网上随意阅读socket.io代码时要非常小心。从v0.9到v1.0,有些东西发生了很大变化(我不知道这是否是其中之一)。你通常应该先从socket.io留档网站开始,因为它总是代表最新版本。然后,如果查看其他互联网参考资料,确保你只使用晚于2014年年中的文章。如果你不知道一篇文章的年份,最好不要在没有最近文章证实的情况下依赖它。