Skip to Content

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.js initializes Socket.IO
  • events/ 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

FileRole
config/socket.jsCreates Socket.IO instance and loads event handlers
events/chat.jsExample event registration module
server.jsPasses 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