如果开发者想在一个特定的应用程序中完全控制消息与事件的发送,只需要使用一个默认的"/"命名空间就足够了.但是如果开发者需要将应用程序作为第三方服务提供给其他应用程序,则需要为一个用于与客户端连接的socket端口定义一个独立的命名空间.
io.of(namespace)
制作两个命名空间
chat和news然后在客户端相互发送信息.
1 var express=require("express"); 2 var http=require("http"); 3 var sio=require("socket.io"); 4 var app=express(); 5 var server=http.createServer(app); 6 app.get("/", function (req,res) { 7 res.sendfile(__dirname+"/index.html"); 8 }); 9 server.listen(1337,"127.0.0.1", function () { 10 console.log("开始监听1337"); 11 }); 12 var io=sio.listen(server); 13 var chart=io.of("/chat").on("connection", function (socket) { 14 socket.send("欢迎访问chat空间!"); 15 socket.on("message", function (msg) { 16 console.log("chat命名空间接收到信息:"+msg); 17 }); 18 }); 19 var news=io.of("/news").on("connection", function (socket) { 20 socket.emit("send message","欢迎访问news空间!"); 21 socket.on("send message", function (data) { 22 console.log("news命名空间接受到send message事件,数据为:"+data); 23 }); 24 });
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script src="/socket.io/socket.io.js"></script> 7 <script> 8 var chat=io.connect("http://localhost/chat"), 9 news=io.connect("http://localhost/news"); 10 11 chat.on("connect", function () { 12 chat.send("你好."); 13 chat.on("message", function (msg) { 14 console.log("从char空间接收到消息:"+msg); 15 }); 16 }); 17 news.on("connect", function () { 18 news.emit("send message","hello"); 19 news.on("send message", function (data) { 20 console.log("从news命名空间接收到send message事件,数据位:"+data); 21 }); 22 }); 23 </script> 24 </head> 25 <body> 26 27 </body> 28 </html>
运行结果: