我正在构建我的应用程序并简单地让我们说我有一个名为 app.js 的主文件和名为 Rooms.js 的文件,我希望在其中所有处理socket.io房间等的函数。
在 app.js 中加载我的模块:
var Rooms = require("./methods/Rooms")
Rooms.Rooms(io, socket);
在 /methods/Rooms.js :
exports.Rooms = function(io, socket) {
/* This function works as a "controller" to Rooms module */
(... some code here ...)
if (usersJoined == usersToStartGame) {
startGame(roomid, io, socket)
}
}
function startGame(roomid, io, socket) {
io.to(roomid).emit('startGame')
(... other stuff ...)
它确实有用,但我觉得我做错了。
每次创建新功能时,我是否真的需要传递 io 和 socket ?是不是有更简单的方法?
答案 0 :(得分:0)
我找到了更优雅的解决方案,满足了我: 在app.js中(为了清晰起见,我重命名为 Server.js ) 我加入了
var server = http.createServer(app.callback());
var io = socketio.listen(server);
以下内容:
exports.server = server
exports.io = io
进入io.sockets.on('connection', function(socket){ ... }
我添加了exports.socket = socket
。
这允许我在 /methods/Rooms.js 中使用Server.js模块:
var Server = require('../Server')
以及稍后在此文件中,我只需将socket.*
,io.*
语法更改为Server.socket.*
,Server.io.*
。