Я пытаюсь внедрить обмен сообщениями клиента с клиентом в своем приложении, используя socket.io
и node.js
и Android
.Socket.io клиент-клиент-логика, с большим количеством пользователей
Я немного искал и нашел много учебников, объясняющих, как обращаться с таргетингом конкретного клиента при отправке сообщений через сокет socket.io
.
Send message to specific client with socket.io and node.js
Решение почти всегда одинаково: Создание объекта HashMap, связывая данные пользователя, такие как его username
, email address
(или что-нибудь уникальное, позволяющий идентифицировать ее), с его socketid
. призвав io.clients[sessionID].send()
Теперь у меня есть два вопроса:
Это будет работать, если только один экземпляр
app
работает, но представьте себе, если мое приложение делится на несколько экземпляров (для больших приложений). Что делать, если клиентA
, подключенный к экземпляруX
, хочет отправить сообщение пользователюB
, подключенному к экземпляруZ
. Если, как видно из примера,socketids
хранятся непосредственно в простом объекте, существующем в скрипте, некоторые сокеты не знают о других пользователях, существующих в другом экземпляре.Если я полностью ошибаюсь (и могу), это хорошая практика для хранения всего
socketids
пользователя всего за одну переменную? Если да, было бы все равно в порядке с окружением 50000+ пользователей? Если нет, следует ли найти другое решение, например, хранить в базе данныхsocketids
пользователя?
Приятный, и вы предложили бы мне сохранить объект для хранения socketids? – FrenchFalcon
В базе данных redis. Я немного изменил свой ответ, чтобы четко отразить это. – overburn
Вы имеете в виду это? http://socket.io/docs/using-multiple-nodes/ – FrenchFalcon