Events
The Socket.IO Template gives you full control over how real-time events are registered and managed.
It doesn’t ship with many default events — instead, you define your own handlers under src/events/ and wire them inside the socket initializer.
Folder Layout
src/
├── config/
│ └── socket.js
└── events/
└── chat.js
config/socket.jsinitializes Socket.IOevents/contains individual event handler modules- Each handler is imported and registered in the initializer
Example: Chat Event Handler
// src/events/chat.js
export default function registerChat(io) {
io.on("connection", (socket) => {
console.log(`User connected: ${socket.id}`)
socket.on("message", (data) => {
console.log("Message received:", data)
socket.broadcast.emit("message", data)
})
socket.on("disconnect", () => {
console.log(`User disconnected: ${socket.id}`)
})
})
}Registering the Handler
In src/config/socket.js, import and register your event modules:
import { Server } from "socket.io"
import registerChat from "../events/chat.js"
export const initSocket = (server) => {
const io = new Server(server, { cors: { origin: "*" } })
// Register all socket event handlers
registerChat(io)
return io
}This modular approach keeps your socket logic clean, testable, and easy to scale — add one file per event group, and import them all into the socket initializer.
Best Practices
- Group related events in the same file (e.g.,
chat.js,notifications.js) - Always handle disconnect events to clean up listeners
- Keep socket logic lightweight — move heavy operations to services
- Use
socket.broadcast.emit()carefully to avoid unnecessary network traffic
Summary
| File | Role |
|---|---|
config/socket.js | Creates Socket.IO instance and loads event handlers |
events/chat.js | Example event registration module |
server.js | Passes HTTP server to initSocket() |
Each event file is fully modular — just import it, register it, and start emitting.
This event structure makes NodeBuilder’s Socket template flexible, clean, and production-ready for any real-time application.
Last updated on