Я использую
Экспресс с хранилищем сеансов "connect-redis"
И Я связал его с Socket.IO через настройку «авторизации»
Так что мне не нужно на самом деле использовать
socket.get
Или
socket.set
Для хранения и получения принадлежащих клиенту переменных.
Но я не уверен, что если я рассылаю сообщение определенной группе людей, подключенных к другому серверу, получаю сообщение успешно.
Так что это действительно масштабируется!
Но, похоже, он не по-настоящему масштабирован , а использует только Redis для хранения значений по отдельности.
Также Я пытался использовать
RedisStore
который задается как Socket.IO
не работает.
Это говорит
DEBUG: TypeError: Converting circular structure to JSON
at Redis.stringify [as pack] (native)
at Redis.publish (/var/www/node_modules/socket.io/lib/stores/redis.js:106:31)
at Manager.handleClient (/var/www/node_modules/socket.io/lib/manager.js:646:18)
at Manager.handleHTTPRequest (/var/www/node_modules/socket.io/lib/manager.js:595:8)
at Manager.handleRequest (/var/www/node_modules/socket.io/lib/manager.js:557:12)
at HTTPServer.<anonymous> (/var/www/node_modules/socket.io/lib/manager.js:112:10)
at HTTPServer.emit (events.js:70:17)
at HTTPParser.onIncoming (http.js:1507:12)
at HTTPParser.onHeadersComplete (http.js:102:31)
at Socket.ondata (http.js:1403:22)
Как я могу масштабировать Socket.IO с широковещательной рассылкой для всех доступных масштабируемых клиентов?
Редактировать: Я следовал учебник Express-Session-Socket.IO и обнаружил, что
io.authorization действительно создает проблему, но это хорошо без io.authorization .
Как это?