2016-12-11 5 views
0

У меня есть некоторые проблемы с тем, как я должен структурировать свое приложение.socket.io - как личные, так и публичные сообщения

Возможно быть в комнате с 50+ пользователями, а также можно отправить сообщение пользователю в частном порядке.

Должен ли я иметь два разных испускания на стороне клиента? Или я должен иметь только один, и пусть сервер решил, должно ли оно быть частным или общедоступным сообщением на основе данных (я думаю, что-то вроде параметра, который имеет true или false)?

+0

Это просто дизайн выбор ваш. В любом случае сервер решает, что делать с сообщением и кто его отправляет. Лично я, вероятно, использовал бы отдельное имя сообщения для личных сообщений только потому, что я думаю, что код будет более четким как на клиенте, так и на сервере. – jfriend00

+0

Спасибо за ваш ответ! – gel

ответ

0

Это действительно просто выбор дизайна программного обеспечения. Не существует «правильного» или «неправильного» ответа. Это почти такая же проблема, как и решение о том, выполняете ли вы две функции с отдельными именами для двух связанных функций или же используете одну функцию, с которой вы передаете разные аргументы.

Мое личное мнение заключается в том, что ваш код будет более проще, если бы вы использовали отдельное имя сообщения для личных сообщений, как это:

// send to a single user 
socket.emit("privateMessage", {userID: xxxx, msg: "Hello"}); 

// broadcast to all users in my room 
socket.emit("publicMessage", {msg: "Hello"}); 

А, то на сервере, нужно иметь отдельный обработчик для публичные сообщения и личные сообщения, что, вероятно, хорошо.

Вместо того, чтобы использовать общее сообщение с аргументами:

// send to a single user 
socket.emit("message", {type: "private", userID: xxxx, msg: "Hello"}); 

// broadcast to all users in my room 
socket.emit("message", {type: "public", msg: "Hello"}); 
+0

Да, мне очень нравится этот подход. Спасибо! – gel

Смежные вопросы