如何在多个文件上共享套接字实例?

时间:2017-11-29 12:09:22

标签: javascript node.js websocket socket.io

我想从多个文件中使用套接字实例。我在App.js文件中编写了我的套接字连接代码。看起来如下

var socketCode = require('../api/sockets/socketCode.js');

var io = require('socket.io')(server);
io.on('connection', function(socket) {
  socketCode(io, socket);
}

现在我的socketCode.js文件如下所示

module.exports = (io, socket) => {
  test: function(data) {
    console.log("io", io, "\n", "socket", socket)
    return io;
  }
}

现在我想从另一个文件中调用test函数,让我们从user.js说出来。

我的user.js看起来像是:

var socketCode = require('../api/sockets/socketCode.js')();
console.log(socketCode.test);

目的是保持单独的套接字代码和控制器以及其他代码。每当我想从控制器发出一些事件/消息时。我只想在socetCode.js内部调用函数,它应该发出套接字事件。

如何在test socketCode.js内的user.js文件中呼叫io。它应该打印/记录{{1}}对象。

我找不到任何正确的文件结构以及套接字。我正在使用快递js。

2 个答案:

答案 0 :(得分:0)

正如您已经想出如何创建在socketCode.js中导出命名函数的模块:

module.exports = (io, socket) => {
  test: function(data) {
    console.log("io", io, "\n", "socket", socket)
    return io;
  }
}

您只需要在其他地方导入此模块:

var io = "your io object";
var socket = "your socket object";
var socket = require('../api/sockets/socketCode.js')(io, socket);
socket.test();

快速解释:您正在导出具有属性的对象。因此,每个函数都可以被视为导入对象的成员。

答案 1 :(得分:0)

有一个使用Typescript语言的库,名为socket-controllers