Konstantin18ko
@Konstantin18ko
Стоматолог

Как настроить роутинг в WebSocket'ах?

const wss = new WebSocket.Server({server});
var clients = {};
wss.on('connection', function (ws) {
    var id = Math.random();
    clients[id] = ws;
    console.log("новое соединение " + id);
    ws.on('message', function (message) {
        console.log('получено сообщение ' + message);
        for (var key in clients) {
            clients[key].send(message);
        }
    });
    ws.on('close', function () {
        console.log('соединение закрыто ' + id);
        delete clients[id];
    });
});
server.listen(8443, function listening() {
    const ws = new WebSocket(`wss://localhost:${server.address().port}`, {
        rejectUnauthorized: false
    });
    ws.on('open', function open() {
        ws.send('All glory to WebSockets!');
    });
});


Хочу добавить пути /open /current /close
  • Вопрос задан
  • 296 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Какой-то непонятный вопрос.
У вебсокетов нет "роутов", там есть каналы и подписки на эти каналы.

В лучшем случае у ws-сервера могут быть разные неймспейсы, и то они как правило разделены полностью и надо подключаться к каждому отдельно с клиента.

Плюс ко всему роуты не нужны чтобы получить что-то от ws-сервера, сервер сам может отправить клиенту что угодно в любой момент.

У вас код сырого ws-сервера, точнее реализация максимально простая которая не умеет ничего этого делать сама.
В итоге всё что вы хотите разделить надо писать в самих данных в каком-нибудь спец. поле и слать все данные jsonом чтобы браузер мог понять что делать с этими данными и что в них лежит.
{method: 'open', data: [1,2,3,4]}
{method: 'current', data: ['asd', '321']}
Ответ написан
Ваш ответ на вопрос

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

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