Socket.io: возможно ли для пользователя изменить канал прослушивания?

Поэтому я начинаю использовать Redis и Socket.io для трансляции событий на стороне клиента. Я использую Laravel для бэкенда и воспользуюсь их функциональностью.

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

Например, может быть, страница будет загружать прослушивание на "канале-100", но могут ли они изменить код, чтобы он мог слушать любой другой канал, например, "канал-110"?

1 ответ

Решение

Я не уверен, что могу помочь конкретно с Socket.io, но я могу рассказать вам, как мы подошли к этому в нашей системе реального времени, и это может относиться к вашей проблеме.

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

Теперь, чтобы решить, какие клиенты могут получить доступ к каким каналам, ваше приложение Laravel должно выдать токен, который указывает, какими правами он обладает. Поскольку ваше приложение Laravel отвечает за управление идентификацией и знает, кто пользователь, всегда лучше иметь актуальную информацию в любое время. Таким образом, ваш клиент должен запросить токен из вашего приложения Laravel, которое передается на ваш сервер Socket.io, который, в свою очередь, должен затем применить правила, чтобы разрешить / запретить запросы на присоединение к этим каналам. Таким образом, вашему серверу Socket.io не нужно встраивать бизнес-логику в вашу систему, а выпуск токенов легко выполняется в вашем приложении.

Посмотрите, как мы сделали аутентификацию токена с вашим приложением.

Я понимаю, что это не прямой ответ, но я надеюсь, что это поможет, как вы думаете об этом архитектурно.

Мэтт, соучредитель Ably: просто лучше в реальном времени

Другие вопросы по тегам