javascript - 无法让 socket.io-emitter 与 socket.io-redis 一起工作

标签 javascript node.js redis socket.io node-redis

我有一个非常简单的代码,试图从外部进程发送到 socket.io 服务器。

服务器.js

var io = require('socket.io')(3201);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));

io.on('connection', function (socket) {
  console.log("test 1");
  socket.on('testemit', function (data) {
      console.log("test 2");
      console.log(data);
  });
});

客户端,emit.js(在文档中找到):

var io = require('socket.io-emitter')({ host: '127.0.0.1', port: 6379 });
setInterval(function(){
      io.emit('testemit', {a: 'aaa'});
}, 3000);

在服务器端,如果我运行它

 DEBUG=* node server.js

我得到的是:

socket.io:server initializing namespace / +0ms
  socket.io:server creating http server and binding to 3201 +3ms
  socket.io:server creating engine.io instance with opts {"path":"/socket.io"} +1ms
  socket.io:server attaching client serving req handler +2ms
  socket.io-parser encoding packet  aaa {"type":2,"data":["testemit",{"a":"aaa"}],"nsp":"/"} +0ms
  socket.io-parser encoded {"type":2,"data":["testemit",{"a":"aaa"}],"nsp":"/"} as 2["testemit",{"a":"aaa"}] +1ms

但是根本没有调用 testemit 的回调。

我错过了什么?

最佳答案

我完全误解了这一点。所有作品。

emit 向这个 socket.io 服务器的所有 socket.io 客户端发送一个 emit。

所以在浏览器中它可以工作,就像这样:

        _socket = io.connect(url);
        _socket.on('testemit', function (message) {
            console.log('testemit');
            console.log(message);
        });

我错误地期望它也能在服务器上工作。

关于javascript - 无法让 socket.io-emitter 与 socket.io-redis 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124194/

相关文章:

Javascript - 索引数组/列表中的每个元素

node.js - 如何显示适合我的时区的时间和日期?

javascript - 了解 http 请求在 Mocha 上的工作原理

javascript - Bootstrap 右下角偏移的较大圆圈内的小圆圈切口

javascript - 在 react.js 中单击按钮时添加类

javascript - 在 NodeJS 中创建一个返回查询结果作为回调的函数?

mongodb - 有人在 MongoDB 前面用 Redis 吗?

mysql - 使用 redis 将所有用户通知保存在列表中?

javascript - 在第一场比赛中停止 Redis hget

javascript - Socket.io Chat 应用程序显示检测到 EventEmitter 内存泄漏。添加了 11 个听众。使用 emitter.setMaxListeners()