簡體   English   中英

無法使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客戶端發出一個emission。

因此在瀏覽器中可以正常運行,如下所示:

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

我錯誤地期望它也可以在服務器中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM