我想发送一个WebSocket,使用express-ws从不同的控制器,而不是通过路由,我在server.js中有以下代码:
var SocketController = require('./routes/ws.routes');
var app = express();
var server = require('http').createServer(app);
var expressWs = require('express-ws')(app);
app.ws('/', SocketController.socketFunction);
SocketController看起来像这样:
exports.socketFunction = function (ws, req) {
ws.on('message', function(msg) {
console.log(msg);
ws.send("hello");
});
}
是否可以调用
ws.send()
来自另一个控制器的事件?如何获取ws
对象?
1条答案
按热度按时间u5rb5r591#
你将不得不把你的套接字存储在内存中。要从不同的模块访问存储的套接字,可以将这些套接字的引用存储在单独的模块中。
例如,您可以创建一个存储所有活动套接字的模块socketCollection。
socketCollection.js:
您可以在定义Web Socket服务器的位置导入此模块:
现在每次新的客户端连接到服务器时,它的引用将保存到'socketCollection'您可以通过导入此数组从任何模块访问这些客户端