Я должен реализовать приложение чата с помощью websocket, пользователи будут общаться через группы, могут быть тысячи групп, и пользователь может быть в нескольких группах. Я думаю о двух решениях:Лучшая практика веб-рассылки для группового чата/одного веб-сайта для всех групп или одного веб-узла в группе?
[1] для каждого группового чата, я создаю конечную точку websocket (используя camel-атмосферу-websocket), пользователи из той же группы могут подписаться на конечную точку группы и отправить/получить сообщение над этой конечной точкой. это означает, что могут быть тысячи конечных точек websocket. Клиентская сторона (скажем, iPhone) должна подписаться на несколько конечных точек wbesocket. это хорошая практика?
[2] Я просто создаю конечную точку websocket для всех групп. Клиентская сторона только подписывается на эту конечную точку, и я сама управляю распределением сообщений на сервере: получаю членов группы, выбираю websocket каждого члена из списка подключенных веб-карт, а затем пишу сообщение каждому члену через websocket.
Какое решение лучше с точки зрения производительности и легко реализуется как на клиенте, так и на сервере?
Спасибо.
РЕДАКТИРОВАТЬ 2015-10-06
Я выбрал второй подход, и сделал тест с мол WebSocket клиентом, я использую верблюд атмосферу WebSocket на стороне сервера. С клиентской стороны я создаю соединения websocket с сервером в потоках. Проблема с причалом заключалась в том, что я могу создать около 160 соединений в сети (это означает около 160 потоков). В результате я почти не вижу разницы, когда число клиентов увеличивается от 1 до 160.
Да, 160 не очень большое число, но я думаю, что я сделаю больше тестов, когда я действительно увижу проблему производительности, для теперь, я в порядке со вторым подходом.
Если вы заинтересованы в тестовом коде, здесь: http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html#d0e22545
Спасибо, я дам второй подход попробовать, я приму этот ответ, когда у меня получится результат теста нагрузки. –