无法让 socket.io-emitter 与 socket.io-redis 一起工作
cannot get socket.io-emitter to work with socket.io-redis
我有一个非常简单的代码,试图从外部进程发送到 socket.io 服务器。
server.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 客户端发送。
因此在浏览器中它可以正常工作,如下所示:
_socket = io.connect(url);
_socket.on('testemit', function (message) {
console.log('testemit');
console.log(message);
});
我错误地期望它也能在服务器中工作。
我有一个非常简单的代码,试图从外部进程发送到 socket.io 服务器。
server.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 客户端发送。
因此在浏览器中它可以正常工作,如下所示:
_socket = io.connect(url);
_socket.on('testemit', function (message) {
console.log('testemit');
console.log(message);
});
我错误地期望它也能在服务器中工作。