Node.js Socket.IO 命名空间实战:隔离通信与多场景应用

作者:岩茶

时间:2026-10-28

浏览:154

本文详解在 Node.js 中使用 Socket.IO 创建命名空间的方法。通过 io.of 接口,开发者可将不同业务逻辑隔离至独立通道,如 /chat 与 /news。文章提供服务器端监听配置与客户端连接示例,展示如何利用命名空间实现多场景下的消息收发与事件处理,确保通信的独立性与可控性。

文章目录

Socket.IO 命名空间概述

在 Socket.IO 应用中,若开发者仅需对单一应用内的消息与事件发送进行完全控制,使用默认的“/”命名空间即可满足需求。然而,当应用程序需作为第三方服务向其他应用开放时,必须为客户端连接定义独立的命名空间,以实现通信隔离。

实现命名空间的核心方法是调用 `io.of(namespace)`。

下面将演示如何创建两个独立的命名空间。

具体场景为构建 `chat` 和 `news` 两个命名空间,并实现客户端在这两个空间内相互发送信息的功能。

服务器端命名空间配置

服务器端实现代码如下:

var express=require("express");
var http=require("http");
var sio=require("socket.io");
var app=express();
var server=http.createServer(app);
app.get("/", function (req,res) {
res.sendfile(__dirname+"/index.html");
});
server.listen(1337,"127.0.0.1", function () {
console.log("开始监听1337");
});
var io=sio.listen(server);
var chart=io.of("/chat").on("connection", function (socket) {
socket.send("欢迎访问chat空间!");
socket.on("message", function (msg) {
console.log("chat命名空间接收到信息:"+msg);
    });
});
var news=io.of("/news").on("connection", function (socket) {
socket.emit("send message","欢迎访问news空间!");
socket.on("send message", function (data) {
console.log("news命名空间接受到send message事件,数据为:"+data);
    });
});

客户端连接与通信实现

客户端 HTML 及 JavaScript 代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="/socket.io/socket.io.js"></script>
<script>
var chat=io.connect("http://localhost/chat"),
news=io.connect("http://localhost/news");
chat.on("connect", function () {
chat.send("你好.");
chat.on("message", function (msg) {
console.log("从char空间接收到消息:"+msg);
            });
        });
news.on("connect", function () {
news.emit("send message","hello");
news.on("send message", function (data) {
console.log("从news命名空间接收到send message事件,数据位:"+data);
            });
        });
</script>
</head>
<body>
</body>
</html>

运行结果展示:

Socket.IO 命名空间概述

通过上述两个简单示例,可以掌握在 Node.js 中利用 Socket.IO 创建命名空间的方法。读者可根据实际需求自由扩展应用逻辑。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章