Node js - Socket.io-клиент не подключается к серверу socket.io

Я пытаюсь подключиться к сокету .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.');
    });
});

Клиент:

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

Я не получаю журнал подключенной консоли или клиентский консоль Connect Connected, и я не знаю почему! Образец кода взят из другого размещенного вопроса: Ссылка, и я не вижу никакого решения проблемы...

Ответ 1

Предполагая, что вы используете версию socket.io больше 1.0 на сервере, измените это:

// 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 года. Если вы не знаете урожай статьи, лучше не полагаться на нее без подтверждения из более поздней статьи.

Ответ 2

Также вам нужно добавить протокол с помощью пути.

изменить

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

к

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

Ответ 3

вы можете использовать localhost. Это работает и для меня. Вы должны использовать свой IP-адрес и порт, который работает для вас.