Я используюScaling Socket.IO и трансляции всех принадлежащих клиентам
Экспресс с "Connect-Redis" сессия магазин
И I tied it with Socket.IO through configuring "authorization"
Так что я не должны фактически использовать
socket.get
or
socket.set
Хранить и извлекать принадлежащие клиенту переменные.
Но я не уверен, что если я передам сообщение определенной группе людей, подключенных на другом сервере, получите сообщение успешно.
Так что это действительно масштабируется!
Но, похоже, это не действительно масштабируется, а использует только Redis как хранимые значения отдельно.
Также I tried to use
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 с вещанием для всех масштабируемых клиентов доступен?
Edit: Я последовал the Express-Session-Socket.IO tutorial и я обнаружил, что io.authorization фактически делает проблему, но это нормально без io.authorization. Как это?
Не могли бы вы уточнить, какие группы пользователей вы хотите транслировать? Например, будут ли они пользователями в том же канале (socket.join()) или пользователями, которые подключены к одному и тому же URL (например,/chat/1 или/chat/2)? – mtsr
@mtsr все пользователи в тех же пространствах имен или в одном и том же канале, но на другом сервере (масштабируются) – InspiredJW
Пространство имен может быть выполнено путем простой маршрутизации этих пользователей на один и тот же сервер. С каналами, которые будут сложнее, потому что каналы соединяются после установления соединения. – mtsr