【问题标题】:Best way of organising code with multiple "socket.on" calls使用多个“socket.on”调用组织代码的最佳方式
【发布时间】:2021-07-24 06:51:25
【问题描述】:

我有一个程序,它使用 nodejs 和 socket.io 与多个玩家进行实时问答游戏。

我的问题是我的 app.js(我的服务器代码)中有很多 socket.on() 调用,使得文件非常长需要在 io.on('connection', function(){}) 内才能工作。

我想知道组织/拆分它们的最佳方式是什么。以下是代码外观的直观表示:

io.on('connection', function (socket) {
    socket.on('Add Room', function () {...
    })

    socket.on('Joined Lobby', function () {...
    })

    socket.on('Request Game Start', function () {...
    })

    socket.on('Answered Question', function () {...
    })
}

【问题讨论】:

    标签: javascript jquery node.js sockets socket.io


    【解决方案1】:

    将相关回调捆绑到配置函数中,并将每个回调放在单独的文件中,如下所示:

    // configRoomCbks.js
    
    export function configRoomCbks (socket) {
        socket.on('Add Room', function () {...
        })
    
        socket.on('Joined Lobby', function () {...
        })
    
        socket.on('Request Game Start', function () {...
        })
    }
    
    import { configRoomCbks } from "./configRoomCbks"
    
    io.on('connection', function (socket) {
        configRoomCbks(socket);
    
        // more callback config functions here
        // e.g. configGamePlayCbks(socket)
    }
    
    

    【讨论】:

    • 这对我来说很有意义。谢谢,我试试看!
    • 以你的方式使用导出等同于使用module.exports = configRoomCbks; 我假设。
    • 不!示例等效于 module.exports.configRoomCbks = function () {} 和主文件中的 const configRoomCbks = require("./configRoomCbks").configRoomCbks;,但您可以更改导出,以便根据需要将该函数作为默认导出。
    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2023-03-31
    • 2015-05-25
    • 1970-01-01
    • 2019-09-24
    相关资源
    最近更新 更多