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

exi*_*onX 13 websocket node.js socket.io

我正在尝试使用以下代码连接到socket.io-client:

服务器:

// 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.');
    });
});
Run Code Online (Sandbox Code Playgroud)

客户:

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');
Run Code Online (Sandbox Code Playgroud)

我没有得到Connected控制台日志或Client Connected控制台日志,我不知道为什么!代码示例来自另一个问题:链接,我没有看到问题的任何解决方案......

Lak*_*tra 16

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

  • 这!经过 8 小时的痛苦!就是这个!谢谢你&lt;3! (2认同)

小智 14

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

更改

var socket = io.connect('localhost:8080', {reconnect: true});
Run Code Online (Sandbox Code Playgroud)

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

  • 至关重要..如果没有这一步,这是行不通的! (3认同)

jfr*_*d00 13

假设您在服务器上使用大于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.');
    });
});
Run Code Online (Sandbox Code Playgroud)

对此:

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

    console.log('Client connected.');

    // Disconnect listener
    socket.on('disconnect', function() {
        console.log('Client disconnected.');
    });
});
Run Code Online (Sandbox Code Playgroud)

请参阅此处的socket.io文档参考.


您不希望仅在已连接的套接字上侦听此事件.您希望在任何套接字上侦听此事件,甚至是新创建的套接字.


另外,在互联网上的随机位置读取socket.io代码时要非常小心.有些事情从v0.9变为v1.0(我不知道这是否是其中之一).您通常应该首先从socket.io文档站点开始,因为它始终代表最新版本.然后,如果查看其他互联网参考,请确保您只使用晚于2014年中期的文章.如果你不知道文章的年份,最好不要在没有最新文章的佐证的情况下依赖它.