我正在处理15个以上的套接字事件,我想在与那些事件相关的模块中管理某些socket.io事件。
例如,我想让一个名为login.js的文件处理login套接字事件,一个名为register.js的文件处理注册套接字事件。
login
index.js:
socket.on("connection", function (client) { console.log("Client connected to socket!"); client.on("login", function (data) { validate(data){ socket.sockets.emit("login_success", data); } }); client.on("register", function (data) { register(data){ socket.sockets.emit("register_success", data); } }); });
有什么方法可以放入client.on("register", function (data) { ...一个文件client.on("login", function (data) { ...中,另一个文件中?
client.on("register", function (data) { ...
client.on("login", function (data) { ...
我通常将各种与客户端相关的功能(通常称为处理程序)拆分为各个模块,然后require在创建socket.io连接的任何文件中使用它们。
require
这是一个示例模块,该模块导出一个期望传递给socket.io客户端的函数:
/* register-handler.js */ module.exports = function (client) { // registration related behaviour goes here... client.on('register', function (data) { // do stuff }); };
它由创建新套接字,侦听连接并将其传递给处理程序的文件使用,该处理程序随后侦听客户端上的事件。
/* main.js */ // require your handlers var handleRegister = require('./register-handler'); // .. set up socket.io socket.on('connection', function (client) { // register handlers handleRegister(client); });