我想使用node.js
在我的socket.io
项目中实现聊天室。我想根据访问过的任何正斜杠链接创建一个房间,访问该链接的所有人都会加入该房间。
例如:
如果我的网站为nodeapp.com
,则可以转到nodeapp.com/funroom
创建一个房间。任何前往nodeapp.com/funroom
(房间内至少有1人)的人都可以在全球聊天。
我不需要帮助实现聊天,只需要房间。
非常感谢
答案 0 :(得分:1)
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)您需要在服务器上获取房间名称并加入:
// 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)
});
});
答案 1 :(得分:1)
我使用以下设置为我的大学编写了类似的应用程序:
用户浏览nodeapp.com/desiredRoom
。我的快递服务器有以下路线:
app.get("/:roomName", function(res, req){
res.render("student", {room:req.params.roomName});
})
这将呈现一个模板(使用Jade),其中输入参数room
由URL定义。然后我将此参数作为javascript变量传递给客户端。 Jade模板看起来像这样:
html
head
script.
room="#{room}";
script(src='/clientScript.js');
body
...
在客户端,clientScript.js
现在知道要加入的空间。您可以使用此系统执行更高级的房间请求。例如,我根据URL中的多个参数拆分房间。