Socket.io에서 Namespace(네임스페이스)는 여러 개의 WebSocket 연결을 따로 관리할 수 있도록 해주는 기능입니다.
네임스페이스는 하나의 공유된 연결을 통해 애플리케이션의 로직을 분리할 수 있도록 해주는 통신 채널입니다. 이러한 방식을 멀티플렉싱(multiplexing)이라고도 합니다.

이 기능을 사용하면 이런 장점이 있습니다.
Node.js 프로젝트를 만들고 socket.io를 설치합니다.
npm init -y
npm install express socket.io
그리고 서버 파일(app.js)을 만들어 express와 socket.io를 불러옵니다.
const express = require("express");
const http = require("http");
const { Server } = require("socket.io");
const app = express();
const server = http.createServer(app);
const io = new Server(server);
app.get("/", (req, res) => {
res.send("Socket.io Namespace 예제");
});
server.listen(3000, () => {
console.log("서버 실행 중! http://localhost:3000");
});
/chat과 /news라는 네임스페이스를 추가합니다.
클라이언트가 /news 채널로 새로운 뉴스(update)를 요청하면 서버에서는 update 이벤트로 뉴스를 전달합니다.
클라이언트가 /chat 채널로 메시지(message)를 전송하면 /chat에 접속된 모든 참여자에게 메세지를 전파한다.
const chat = io.of("/chat");
const news = io.of("/news");
news.on("connection", (socket) => {
socket.on("update", () => {
const newsData = `실시간 뉴스 업데이트: ${new Date().toLocaleTimeString()}`;
news.emit("update", newsData);
});
...
});
chat.on("connection", (socket) => {
socket.on("message", (msg) => {
chat.emit("message", msg);
});
...
});
io.of('/namespace')를 사용하면 특정 기능을 따로따로 관리합니다.io('/namespace')를 사용해 특정 네임스페이스에 연결하면 됩니다.