简体   繁体   English

NodeJs + Socket.io : io.to from module

[英]NodeJs + Socket.io : io.to from module

I'm trying to emit a message in a specific room in my modules following Patrick Robert's answer How can i export socket.io into other modules in nodejs?.我正在尝试按照 Patrick Robert 的回答如何在我的模块中的特定房间中发出消息如何将 socket.io 导出到 nodejs 中的其他模块中?。

io.js io.js

var sio = require('socket.io');
var io = null;

exports.io = function () {
  return io;
};

exports.initialize = function(server) {
  return io = sio(server);
};

module.js模块.js

ioreq = require('./io')

ioreq.io().on('connection', function(socket) {
    var room_name = 2;
    socket.join(room_name);
    socket.to(room_name).emit("test",'This is a Test'); //This is working
});

function sendDataFromModule(data) { // This function don't do anything at all !
socket.to(room_name).emit("test",data);
}

sendDataFromModule('Test from function');// Not working

}

Can you help me make it work ?你能帮我让它工作吗?

Make io global variable, in io.js在 io.js 中创建 io 全局变量

 global.io = require("socket.io")(server);

in module.js在 module.js 中

    //ioreq = require('./io') no need for this
    
    io.on('connection', function(socket) {
        var room_name = 2;
        socket.join(room_name);
        socket.to(room_name).emit("test",'This is a Test'); //This is working
    });
    function sendDataFromModule(data) {
io.in(room_name).emit("test",data); // change this
}

sendDataFromModule('Test from function');

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM