Socket.io не примет соединение - PullRequest
0 голосов
/ 22 февраля 2020

Работая с socket.io в первый раз и пытаясь его запустить и запустить, я могу сделать запрос, и у меня есть сервер, который работает, вот сервер в узле.

const app = require('express')();
const http = require('http').createServer(app);
const io = require('socket.io')(http);

app.get("/",function (req,res){
  res.send("Hello you socket loving bastard!");
});

io.on('connection', socket => {
  console.log('user connection', socket);
  io.emit('You got someone!', {user: "me"});
});

io.on('close', socket => {
  console.log(socket);
});

http.listen(9090, () => {
  console.log("Node starting on 9090 for websockets!")

});

Использование vue -native-websocket У меня есть это ...

Vue.use(Socket, 'ws://localhost:9090/', {
  reconnection: true,
  reconnectionAttempts: 5,
  reconnectionDelay: 1500
});

Консоль в браузере говорит: build.js?b408:1 WebSocket connection to 'ws://localhost:9090/' failed: Connection closed before receiving a handshake response

Сервер вообще ничего не говорит в консоли, однако он будет обслуживать get запрос

1 Ответ

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

Ну ... проблема в том, что я использую vue-native-websocket Socket.io НЕ является собственным обработчиком веб-сокетов и добавляет дополнительную информацию заголовка, которой явно не хватало. Я переключаюсь только на ws в узле, и он работает нормально.

Из документов Socket.io.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...