ShelestovAnt
@ShelestovAnt
Верстаю и программирую

Как правильно открывать соединение WebSocket?

Всем привет!

Изучаю WebSocket по урокам https://www.youtube.com/watch?v=a1zzx_I7SCI&list=P...

Если делать точно так же как в видео то все работает. НО я клиенте не хочется использовать библиотеку require('socket.io-client') т.к. даже в сжатом виде это почти 100кб, для будущего проекта, который хочу сделать, это очень много лишнего... мне там нужно только принять с сервера новые id и все

И отказавшись от этой библиотеки сразу столкнулся с проблемой:
let socket = new WebSocket("ws://127.0.0.1:3000");
Выдает ошибку "failed: Connection closed before receiving a handshake response"

на сервере server.js:
let http = require('http').Server();
let io = require('socket.io')(http);
let Redis = require('ioredis');

let redis = new Redis();

redis.psubscribe('channel_*');
redis.on('pmessage', function(pattern, channel, message) {
    console.log('Message recieved: ' + message);
    console.log('Channel: ' + channel);
    message = JSON.parse(message);
    io.emit(channel + ':' + message.event, message.data);
});

http.listen(3000, function() {
    console.log('Listening on Port: 3000');
});


Ну и в php
event(new NewMessage('сработало'));

Может кто подсказать как правильно создать WebSocket на клиенте без лишних библиотек?
  • Вопрос задан
  • 1328 просмотров
Пригласить эксперта
Ответы на вопрос 1
ivankomolin
@ivankomolin
Если вы используете сервер socket.io, то вам необходимо использовать клиентскую библиотеку socket.io, либо писать обертку для работы с сервером самому.

Чтобы на клиенте заработало "new WebSocket("ws://127.0.0.1:3000");" необходимо на бэкенде запускать обычный Websocket сервер.

Преимущества socket.io как раз в том, что если клиент не умеет работать с websocket(да такое бывает), то библиотека взаимодействует с сервером другими способами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы