I'm handling over 15 different socket events, I'd like to manage certain socket.io events within the modules that are related to those events.
For example, I'd like to have a file named login.js handle the login
socket event, and a file named register.js handle the registration socket event.
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);
}
});
});
Is there a way that I can put client.on("register", function (data) { ...
in one file and client.on("login", function (data) { ...
in another?
Here is one way
login.js
I usually split various client related functionality (I usually call them handlers) into individual modules, and then
require
and use them in whatever file creates the socket.io connection.Here is an example module, that exports a function which expects to be passed a socket.io client:
Which is consumed by a file that creates a new socket, listens for connections, and passes them to the handler, which then listens to events on the client.
Yes you can, using
exports
andrequire
.Check this out.