Kenrow Messaging Service (KMS)
Kenrow Messaging Service (KMS) is a socket-based messaging system that allows clients to connect, join rooms, send messages to individual clients or rooms, and receive messages. It uses Socket.IO to manage real-time connections and Express to handle the server infrastructure.
Features Socket Initialization: Automatically initialize the Socket.IO server if it's not already initialized. Join Rooms: Clients can join specific rooms to participate in targeted communication. Send Messages: To Rooms: Broadcast a message to all clients in a particular room. To All Clients: Send a message to every connected client. To Individual Clients: Send a message to a specific client based on their socketClientId. Receive Messages: Listen for messages based on message slugs and handle them via callbacks. Socket Disconnection: Manually disconnect the socket for a client. Server Integration: Easily integrates with an Express server, allowing Socket.IO to handle messaging and CORS (Cross-Origin Resource Sharing) options. Installation Clone or download the repository. Install dependencies: bash Copy code npm install express socket.io Import the KMS class into your project. Usage
- Initialize the server First, create an Express server and pass it to the KMS class along with CORS options.
import express from "express";
import { Server } from "socket.io";
import KMS from "./KMS";
const app = express();
const server = app.listen(3000, () => console.log("Server is running on port 3000"));
const corsOptions = { origin: "*", methods: ["GET", "POST"], };
const messagingService = new KMS(server, corsOptions);
messagingService.start();
- Handle Client Connections Use the onConnection method to define what should happen when a client connects.
messagingService.onConnection((socket) => {
console.log(Client connected: ${socket.id}
);
});
- Send Messages to Rooms You can send messages to a specific room using sendMessageToRoom.
messagingService.sendMessageToRoom("room1", "messageSlug", { text: "Hello, Room 1!" });
- Send Messages to All Clients Use sendMessageToAll to broadcast a message to all connected clients.
messagingService.sendMessageToAll("messageSlug", { text: "Hello, everyone!" });
- Send Message to a Specific Client Use sendMessageToClient to send a message to a particular client.
messagingService.sendMessageToClient("messageSlug", { text: "Hello, client!" });
6. Receive Messages
Use the receiveMessage function to listen for incoming messages.
messagingService.receiveMessage("messageSlug", (data) => { console.log("Message received: ", data); });
- Disconnect a Client Use disconnectSocket to manually disconnect the currently connected client.
messagingService.disconnectSocket();
Methods
Private Methods
#socketInitialization(): Initializes the Socket.IO instance and sets up connection and disconnection handlers. Public Methods onConnection(callback): Sets up a handler for new socket connections. The callback receives the connected socket as an argument. sendMessageToRoom(room, messageSlug, messageData): Sends a message to all clients in the specified room. sendMessageToAll(messageSlug, messageData): Broadcasts a message to all connected clients. sendMessageToClient(messageSlug, messageData): Sends a message to the currently connected client. receiveMessage(messageSlug, callback): Listens for incoming messages with a specific slug and handles them using a callback. disconnectSocket(): Manually disconnects the currently connected client socket. start(): Starts the socket server.
Conclusion Kenrow Messaging Service provides an easy-to-use messaging system for real-time communication using Socket.IO. It allows developers to handle room-based messaging, client-specific messaging, and broadcasting messages to all clients. It integrates smoothly with an Express server and includes CORS configuration for cross-origin requests.