Websockets Notification-/Chat- System

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

Для уведомлений у меня есть канал "уведомления/канал", а для чатов у меня есть канал "чаты/канал".

Разве эти два канала слишком "глобальны"? Скажем, когда сайт имеет 1.000.000 пользователей, это означает, что все эти пользователи будут в этих двух каналах. Когда одно уведомление отправляется другому конкретному пользователю, это означает, что сообщение отправляется по каналу, на котором подписались 1.000.000 пользователей.

То же самое с сообщениями чата. Скажем, пользователь хочет пообщаться с другим пользователем. Каждое сообщение будет передавать канал, в котором все пользователи подписались и в конце концов, только целевой пользователь получит сообщение из-за переданного получателя.

Как правильно обрабатывать каналы уведомлений и "private" каналы чата?

Было бы более эффективным и безопасным создание для каждого пользователя "подканала" (групповые чаты и уведомления, уведомления E.G./channel/user1) или просто позволить всем пользователям в одном большом канале?

Ответ 1

Лично я хотел бы обратиться к этому:

У каждого пользователя есть 1 соединение в сети. Это соединение будет использоваться для передачи всех данных. Я бы использовал формат json для передачи данных взад и вперед. Я бы использовал поле в структуре json, чтобы указать тип сообщения, а также другую информацию, такую ​​как идентификатор комнаты чата. Итак, если бы я хотел отправить уведомление, это может быть что-то вроде этого (действительно простой пример):

{
    "type":"notification",
    "message":"New Mail"
}

Сообщение о чате будет выглядеть примерно так:

{
    "type":"chat",
    "chatID":4756,
    "message":"Hello, world!"
}

Логика Javascript на стороне клиента определит тип сообщения и что с ним делать. Логика на стороне сервера определит, является ли пользователь "подписан" в указанную комнату чата, поэтому он будет знать, какие сообщения чата отправлять кому-либо пользователю. Это обеспечит безопасность, поэтому вы не отправляете сообщения чата пользователям, которые не подписаны на номер.

Сообщите мне, если вам нужно какое-либо разъяснение по этому методу.