2016-05-03 2 views
1

Я пытаюсь внедрить обмен сообщениями клиента с клиентом в своем приложении, используя 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 пользователя?

ответ

1

Вы можете использовать экземпляр redis, используемый всеми вашими приложениями. И у вас есть 2 птицы одним камнем.

Redis сохранит все ваши идентификаторы сокетов в централизованном месте.

+0

Приятный, и вы предложили бы мне сохранить объект для хранения socketids? – FrenchFalcon

+0

В базе данных redis. Я немного изменил свой ответ, чтобы четко отразить это. – overburn

+0

Вы имеете в виду это? http://socket.io/docs/using-multiple-nodes/ – FrenchFalcon

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