Клиент Socket.io не работает с сервером websocket - PullRequest
1 голос
/ 25 февраля 2020

Я написал сервер веб-сокетов в go, используя https://github.com/gorilla/websocket. На клиенте интерфейсная команда хочет использовать Socket.io и не работает. С простыми websockets все работает нормально. У меня мало знаний о Socket.io, только то, что я прочитал на inte rnet, и я не нашел никакого решительного и недавнего ответа.

Есть ли возможность сделать Socket. io для работы с обычным сервером веб-сокетов?

Ошибка клиента Socket.IO: время ожидания.
Код клиента Socket.IO:

    var token = "valid_token";

    var socket = io(
        'ws://localhost:6060',
        {
            transports: ['websocket'],
            path: '/ws/dispatchers',
            query:  {
                token: token
            },
        }
    );

    socket.on('connect_error', (error) => {
        console.log("------connect_error------");
        console.log(error);
    });

    socket.on('connect_timeout', (timeout) => {
        console.log("------timeout-----");
        console.log(timeout);
    });

    socket.on('connect', function(){
        console.log("---------connect---------");
    });
    socket.on('event', function(data){
        console.log(data)
    });
    socket.on('disconnect', function(){
        console.log("---------disconnect---------")
    });
    socket.on('error', function(err){
        console.log("--------error------------");
        console.log(err)
    });

    socket.on('ping', () => {
        console.log("--------ping------------");

    });

    socket.on('pong', (latency) => {
        console.log("--------pong------------");
    });

Ошибка сервера: веб-сокет: закрыть 1005 (нет статус)
Код бэкенда, такой же как: https://github.com/gorilla/websocket/tree/master/examples/chat

1 Ответ

0 голосов
/ 25 февраля 2020

Из документации Socket.io

Чем Socket.IO не является Socket.IO НЕ является реализацией WebSocket. Хотя Socket.IO действительно использует WebSocket в качестве транспорта, когда это возможно, он добавляет некоторые метаданные к каждому пакету: тип пакета, пространство имен и идентификатор пакета, когда требуется подтверждение сообщения. Вот почему клиент WebSocket не сможет успешно подключиться к серверу Socket.IO, а клиент Socket.IO также не сможет подключиться к серверу WebSocket. Пожалуйста, смотрите спецификацию протокола здесь.

...