Node js - Socket.io-client is not connecting to so

2019-02-12 08:05发布

I am trying to connect to a socket.io-client using the following code:

Server:

// 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.');
    });
});

Client:

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');

I don't get the Connected console log or Client Connected console log and I don't know why! The code sample is taken from another question posted: Link and I don't see any solution to the problem...

3条回答
萌系小妹纸
2楼-- · 2019-02-12 08:15

you can use localhost. It works for me as well. You must use your ip address and port that works for you

查看更多
叼着烟拽天下
3楼-- · 2019-02-12 08:22

Also you need to add protocol with path.

change

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

to

var socket = io.connect('http://localhost:8080', {reconnect: true});
查看更多
4楼-- · 2019-02-12 08:34

Assuming you are using a socket.io version greater than 1.0, on the server, change this:

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

    console.log('Client connected.');

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

to this:

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

    console.log('Client connected.');

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

See the socket.io documentation reference here.


You don't want to be listening for this event only on already connected sockets. You want to listen for this event on any socket, even a newly created one.


Also, be very careful when reading socket.io code in random places on the internet. Some things changed significantly from v0.9 to v1.0 (I don't know if this was one of those things or not). You should generally always start with the socket.io documentation site first since that will always represent the latest version. Then, if looking at other internet references, make sure you only use articles that are later than mid-2014. If you don't know the vintage of an article, it's best not to rely on it without corroboration from a more recent article.

查看更多
登录 后发表回答