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 на стороне клиента определит тип сообщения и что с ним делать. Логика на стороне сервера определит, является ли пользователь "подписан" в указанную комнату чата, поэтому он будет знать, какие сообщения чата отправлять кому-либо пользователю. Это обеспечит безопасность, поэтому вы не отправляете сообщения чата пользователям, которые не подписаны на номер.
Сообщите мне, если вам нужно какое-либо разъяснение по этому методу.