我正在使用 socket-io-redis 运行 VVV (Vagrant)。这似乎有效,消息正在发送到 Redis。
我测试SUBSCRIBE socket.io#/#
它正在记录一堆消息以进行测试。
这是我在终端中看到的响应示例 -
1) "message"
2) "socket.io#/#"
3) "\x93\xa7emitter\x83\xa4type\x02\xa4data\x92\xa4time\xb82016-04-03T22:17:21.478Z\xa3nsp\xa1/\x82\xa5rooms\x90\xa5flags\x80"
节点 JS -
var redis = require('socket.io-redis');
var io = require('socket.io')(3000);
io.adapter(redis({ host: '192.168.50.4', port: 6379 }));
// Handle opened socket connections
io.on('connection', function(socket) {
console.log( 'Connection' );
});
var io = require('socket.io-emitter')({ host: '192.168.50.4', port: 6379 });
setInterval(function(){
io.emit('time', new Date);
}, 5000);
客户 -
( function( window, undefined ) {
'use strict';
var socket = io( '192.168.50.4:3000', {transports:['websocket']} );
socket.on( 'time', function() {
console.log( 'Received time' );
});
socket.on( 'connect', function() {
console.log( 'Connected' );
console.log( socket );
});
} )( this );
当我运行 Node 应用程序时,我看到了消息Connection
,在浏览器的控制台中我看到了消息Connected
(然后是用于调试的套接字)。
我看不到任何明显错误的东西,客户端连接并且发射器似乎正在工作。但是客户从来没有收到任何发出的东西。
我错过了什么吗?由于运行 Vagrant,IP 不是本地主机。
任何建议表示赞赏。谢谢!
编辑:
快速更新,我可以在不使用的情况下发出socket.io-emitter
,但它不会通过 Redis。当我使用发射器时,它会正确地通过 Redis,如上所述。
即使端口是打开的,我的客户似乎也没有收到来自 Redis 的消息。
这是我尝试的 -
socket.emit( 'new_post', 'Nope' );
var io = require('socket.io-emitter')({ host: '192.168.50.4', port: 6379 });
io.emit( 'new_post', 'Yep' );
在我的浏览器中,我看到Nope
但没有别的。然后我monitor
Redis 并看到以下内容 -
"publish" "socket.io#/#" "\x93\xa7emitter\x83\xa4type\x02\xa4data\x92\xa8new_post\xa3Yep\xa3nsp\xa1/\x82\xa5rooms\x90\xa5flags\x90"
我的服务器在使用 Redis 时也看不到消息,我用 -
socket.on( 'new_post', function( msg ){
socket.emit( 'new_post', msg );
});