带VVV的Socket.io - 客户端未收到消息

时间:2016-04-03 22:28:32

标签: node.js socket.io vagrant socket.io-redis vvvv

我正在使用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 );
});

0 个答案:

没有答案