3

我正在使用 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但没有别的。然后我monitorRedis 并看到以下内容 -

"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 );
});
4

0 回答 0