基于/ link的Socket.io房间

我想实现使用socket.io在我的node.js项目聊天室。 我想创build一个基于任何访问该链接的所有人在该房间join的正斜杠链接的房间。

例如:

如果我的网站是nodeapp.com ,则可以通过访问nodeapp.com/funroom来创build一个空间。 任何进入nodeapp.com/funroom人(在房间里至less有一个人)可以全球聊天。

我不需要帮助实现聊天,只是房间。

非常感谢

1)您需要将房间名称发送到服务器:

 // Client var socket = io('/'); socket.emit('joinroom', window.location.pathname); socket.on("new user", function(data) { console.log("New user. Total users: ", data); }); 

2)您需要在服务器上获取房间名称并join:

 // Backend var io = require('socket.io')(); var rooms = {}; io.on('connection', function(socket) { socket.on('joinroom', function(room) { this.join(room); if (typeof rooms[room] ==== "undefined") rooms[room] = {}; rooms[room].count = rooms[room].total ? rooms[room].total+1 : 1; io.to(room).emit("new user", rooms[room].count) }); }); 

我为我的大学写了一个类似的应用程序,使用以下设置:

用户浏览到nodeapp.com/desiredRoom 。 我的快递服务器有以下路线:

 app.get("/:roomName", function(res, req){ res.render("student", {room:req.params.roomName}); }) 

这将呈现一个模板(使用Jade),input参数room由URL定义。 然后我把这个参数作为一个javascriptvariables传递给客户端。 Jade模板看起来像这样:

 html head script. room="#{room}"; script(src='/clientScript.js'); body ... 

在客户端, clientScript.js现在知道要join的空间。 您可以使用此系统执行更高级的房间请求。 例如,我根据URL中的多个参数拆分房间。