gpt4 book ai didi

javascript - NodeJS、websocket 和 module.export

转载 作者:行者123 更新时间:2023-11-30 16:54:18 26 4
gpt4 key购买 nike

我有一个 server.js 文件。

在里面,我定义了我的路线。

// routes
var mainRoutes = require('./routes/main.js')(app, express);
var apiRoutes = require('./routes/api.js')(app, express);
var socketRoutes = require('./routes/socket.js');

app.use('/', mainRoutes);
app.use('/api', apiRoutes);

// socket.io communication
io.sockets.on('connection', socketRoutes);

我的 socket.js 文件看起来像这样:

module.exports = function (socket) {

console.log('user connected');

socket.on('myEvent', function(data) {
// whatever ...
});
}

在这个函数中,我可以捕获事件并发送一些。但是我需要在某个时候向所有人发送消息。假设我收到“myEvent”事件。

所以基本上,我想做的是:

io.sockets.emit('messageForEveryone', "This is a test");

但在这里,我只能处理“套接字”参数,我猜这只适用于 1 个人。

我想将 io 从 server.js 传递到 socket.js。

我试过了(在 server.js 中):

var socketRoutes = require('./routes/socket.js', io);

那(在 socket.js 中):

module.exports = function (io, socket)

显然,它不起作用。我什至不明白套接字参数的来源。

问题:当我在 sockets.js 文件的 module.export 中时,如何处理 io 对象?

我非常感谢任何帮助,我是新手。

谢谢!

最佳答案

由于您只是想发送给所有客户端,而不是将 io 传递给 socketRoutes,您可以简单地执行此操作。

module.exports = function (socket) {
var sockets = this;
console.log('user connected');

socket.on('myEvent', function(data) {
sockets.emit('hello_all_clients',data);
});
}

关于javascript - NodeJS、websocket 和 module.export,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com