Я играл с различными реализациями публикации/подписки для nodeJS и задавался вопросом, какой из них лучше всего подходит для конкретного приложения. Требования приложения включают синхронизацию объектов в реальном времени в многоканальных многопользовательских 3D-средах.
Я начал использовать socket.io, создал базовый массив каналов, и когда пользователи отправляют сообщения, он перебирает пользователей в этом канале и отправляет сообщение клиенту пользователя. Это сработало хорошо, и у меня не было никаких проблем с этим.
Для сохранения объектов я добавил поддержку Redis с помощью node_redis. Затем я заменил цикл client.send на массив каналов с помощью Redis pub/sub как слой абстракции. Но я заметил, что мне нужно создать новый клиент Redis для каждого пользователя, который сделал подписку. И мне все еще нужно было хранить информацию о клиенте socket.io для отправки сообщений на публикацию. Насколько это масштабируемо? Есть ли другие (лучшие) реализации или дальнейшие оптимизации, которые я мог бы сделать? Что бы вы сделали?