多节点 js 服务器与 socket.io-redis 相互通信未接收事件
Mutliple nodejs server communicating with each other with socket.io-redis not receiving event
我设法使用 socket.io-redis 将两个 nodejs 服务器连接到 Redis。使用 "redis-cli monitor" 我可以看到在 Redis 上收到的事件,但它一直发送。好像少了什么。
这里是两个服务器的样子(数字 1 和 2 颠倒了)
socket.on('action', function(data) {
socket.broadcast.to(3).emit('toServer1', "message from server 2")
})
socket.on('toServer2', function(msg) {
console.log('msg', msg)
})
这是我在使用按钮触发事件操作时在 Redis 监视器上看到的内容。
1455886600.760190 [0 127.0.0.1:53659] "publish" "socket.io#/wallo#3#" "\x93\xa6zCLzS6\x83\xa4type\x02\xa4data\x92\xa9toServer2\xb5message from server 1\xa3nsp\xa6/wallo\x83\xa6except\x91\xbb/wallo#zWTx7XX3IWTwyAkgAAAD\xa5rooms\x91\x03\xa5flags\x81\xa9broadcast\xc3"
1455886611.012510 [0 127.0.0.1:53692] "publish" "socket.io#/wallo#3#" "\x93\xa602LA0x\x83\xa4type\x02\xa4data\x92\xa9toServer1\xb5message from server 2\xa3nsp\xa6/wallo\x83\xa6except\x91\xbb/wallo#Ta740dOp_limABWNAAAC\xa5rooms\x91\x03\xa5flags\x81\xa9broadcast\xc3"
他们也都订阅了正确的频道:
1455886848.742998 [0 127.0.0.1:53660] "subscribe" "socket.io#/#/#7xqLUZmHRYvy63akAAAH#"
1455886848.767710 [0 127.0.0.1:53660] "subscribe" "socket.io#/wallo#/wallo#7xqLUZmHRYvy63akAAAH#"
1455886848.809907 [0 127.0.0.1:53660] "subscribe" "socket.io#/wallo#3#"
1455886843.924659 [0 127.0.0.1:53693] "subscribe" "socket.io#/#/#7PFZsIfHabXD9rKnAAAD#"
1455886843.946771 [0 127.0.0.1:53693] "subscribe" "socket.io#/wallo#/wallo#7PFZsIfHabXD9rKnAAAD#"
1455886843.960910 [0 127.0.0.1:53693] "subscribe" "socket.io#/wallo#3#"
我是不是漏掉了什么。 fetch/receive 来自 redis 的事件还有其他事情要做吗?
好的...我想通了。
我想在客户端而不是服务器端捕获事件。
我不知道以前版本的 socket.io-redis 是否不同,但出于某种原因,我记得在服务器上接收事件。
我设法使用 socket.io-redis 将两个 nodejs 服务器连接到 Redis。使用 "redis-cli monitor" 我可以看到在 Redis 上收到的事件,但它一直发送。好像少了什么。
这里是两个服务器的样子(数字 1 和 2 颠倒了)
socket.on('action', function(data) {
socket.broadcast.to(3).emit('toServer1', "message from server 2")
})
socket.on('toServer2', function(msg) {
console.log('msg', msg)
})
这是我在使用按钮触发事件操作时在 Redis 监视器上看到的内容。
1455886600.760190 [0 127.0.0.1:53659] "publish" "socket.io#/wallo#3#" "\x93\xa6zCLzS6\x83\xa4type\x02\xa4data\x92\xa9toServer2\xb5message from server 1\xa3nsp\xa6/wallo\x83\xa6except\x91\xbb/wallo#zWTx7XX3IWTwyAkgAAAD\xa5rooms\x91\x03\xa5flags\x81\xa9broadcast\xc3"
1455886611.012510 [0 127.0.0.1:53692] "publish" "socket.io#/wallo#3#" "\x93\xa602LA0x\x83\xa4type\x02\xa4data\x92\xa9toServer1\xb5message from server 2\xa3nsp\xa6/wallo\x83\xa6except\x91\xbb/wallo#Ta740dOp_limABWNAAAC\xa5rooms\x91\x03\xa5flags\x81\xa9broadcast\xc3"
他们也都订阅了正确的频道:
1455886848.742998 [0 127.0.0.1:53660] "subscribe" "socket.io#/#/#7xqLUZmHRYvy63akAAAH#"
1455886848.767710 [0 127.0.0.1:53660] "subscribe" "socket.io#/wallo#/wallo#7xqLUZmHRYvy63akAAAH#"
1455886848.809907 [0 127.0.0.1:53660] "subscribe" "socket.io#/wallo#3#"
1455886843.924659 [0 127.0.0.1:53693] "subscribe" "socket.io#/#/#7PFZsIfHabXD9rKnAAAD#"
1455886843.946771 [0 127.0.0.1:53693] "subscribe" "socket.io#/wallo#/wallo#7PFZsIfHabXD9rKnAAAD#"
1455886843.960910 [0 127.0.0.1:53693] "subscribe" "socket.io#/wallo#3#"
我是不是漏掉了什么。 fetch/receive 来自 redis 的事件还有其他事情要做吗?
好的...我想通了。
我想在客户端而不是服务器端捕获事件。 我不知道以前版本的 socket.io-redis 是否不同,但出于某种原因,我记得在服务器上接收事件。