Websocket имеет дело с разными данными - разные конечные точки? - PullRequest
0 голосов
/ 22 января 2019

Мне любопытно узнать о веб-сокетах и ​​о том, как различать отправляемые ими разные данные.Я действительно не могу найти ничего ясного в Интернете, если не пропущу что-то, что смотрит мне в лицо.

У меня есть веб-розетка, и рукопожатие устанавливает соединение.Цель ws - предоставить результаты футбольных матчей в реальном времени и таблицы в реальном времени.

Так что, если бы это был API отдыха, у меня, вероятно, было бы 2 конечных точки, /live-scores и /table.Мои компоненты реагирования интересуются различными данными, поэтому мне интересно, есть ли в веб-сокетах эквивалент конечных точек?Или как вы различаете разные данные?Должен ли быть отдельный веб-сокет для каждого элемента данных?

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

Может кто-нибудь указать мне правильное направление или дать ответ здесь?

TLDR Вы создаете веб-сокет для каждой отдельной группы данных (из-за отсутствия лучшего способа описания этого) или существует только один веб-сокет и, если да, то какой способ лучше всего подходит дляклиент, чтобы определить, какие данные он получает?

Если вопрос не имеет смысла, дайте мне знать, и я постараюсь прояснить ситуацию.

Мой стартовый код здесь:

import sockjs from 'sockjs';

const ws = sockjs.createServer({
    sockjs_url: 'http://cdn.jsdelivr.net/sockjs/1.0.1/sockjs.min.js',
});

ws.on('connection', connection => {
    connection.on('data', m => {
        const message = m ? JSON.parse(m) : {};
        if (message.type === 'register') {
            connection.write(
                JSON.stringify({
                    address: message.address,
                    body: {
                        message: 'Hello World!',
                    },
                })
            );
        }
    });
});
export default ws;

1 Ответ

0 голосов
/ 23 января 2019

Вам не нужно использовать несколько сокетов, чтобы делать то, что вы хотите. На самом деле есть только несколько законных причин, по которым вы можете этого захотеть (см. Множество подключений через веб-сокет ).

Ваш метод отправки полезных нагрузок JSON через сокет и использования свойства этого объекта для определения контекста данных вполне приемлем, однако вы можете провести небольшое исследование публикации-подписки обмена сообщениями шаблон, чтобы увидеть, будет ли он лучше соответствовать вашим потребностям. Поскольку вы используете sockjs, вам нужно просмотреть sockjs-rooms , чтобы включить этот тип функций.

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