为一个房间创建一个可共享的 URL NodeJS + Socketio
Create a sharable URL for a room NodeJS + Socketio
我正在创建一个大厅,它应该将用户重定向到带有 url 的游戏室,例如 site.com/1234,其中 1234 是使用 Node.js 和 Socket.io 的房间代码。我已经到了当用户按下按钮时向服务器发送请求以连接到具有随机房间代码的房间的步骤。然后应发回一条包含 url 的消息,以便我可以执行 window.location = url
。这应该会产生正确的 link 并将用户发送到一个新的 HTML 文件。
我现在遇到的问题是,我不知道如何生成这样的 url 或如何在请求获得批准后显示下一个 html 页面。我看到有人说我可以做到 app.get("/:gameID")
但我缺乏正确实施它的知识。
我看到其他一些帖子问过这个问题,但答案要么非常模糊,要么使用了一些框架。如果有人可以将我推向正确的方向,我将不胜感激。
我是怎么做到的,就像你说的,设置一个允许你有参数的路由
app.get('/chat/:id', function(req,res){
res.sendFile('./public/chat/chat.html', { root: __dirname });
});
然后客户端,trim url 并使用 socket.io 发出房间
let t = window.location.href.substring(window.location.href.lastIndexOf("/") + 1)
// on connection, tries to login to the chat with the chat ID made
socket.on('connect', function(){
socket.emit('loginchat', {id: t});
});
又是服务器端:
socket.on('loginchat', async function(data){
socket.room = data.id;
//console.log(socket.room)
socket.join(data.id);
});
所以当用户访问带有参数的 /chat 路由时,服务器将访问它,并将它们发送到适当的房间。
我写得有点快,所以对于任何令人困惑的地方,我们深表歉意,如果您卡在其中的一部分,请告诉我:)
我正在创建一个大厅,它应该将用户重定向到带有 url 的游戏室,例如 site.com/1234,其中 1234 是使用 Node.js 和 Socket.io 的房间代码。我已经到了当用户按下按钮时向服务器发送请求以连接到具有随机房间代码的房间的步骤。然后应发回一条包含 url 的消息,以便我可以执行 window.location = url
。这应该会产生正确的 link 并将用户发送到一个新的 HTML 文件。
我现在遇到的问题是,我不知道如何生成这样的 url 或如何在请求获得批准后显示下一个 html 页面。我看到有人说我可以做到 app.get("/:gameID")
但我缺乏正确实施它的知识。
我看到其他一些帖子问过这个问题,但答案要么非常模糊,要么使用了一些框架。如果有人可以将我推向正确的方向,我将不胜感激。
我是怎么做到的,就像你说的,设置一个允许你有参数的路由
app.get('/chat/:id', function(req,res){
res.sendFile('./public/chat/chat.html', { root: __dirname });
});
然后客户端,trim url 并使用 socket.io 发出房间
let t = window.location.href.substring(window.location.href.lastIndexOf("/") + 1)
// on connection, tries to login to the chat with the chat ID made
socket.on('connect', function(){
socket.emit('loginchat', {id: t});
});
又是服务器端:
socket.on('loginchat', async function(data){
socket.room = data.id;
//console.log(socket.room)
socket.join(data.id);
});
所以当用户访问带有参数的 /chat 路由时,服务器将访问它,并将它们发送到适当的房间。
我写得有点快,所以对于任何令人困惑的地方,我们深表歉意,如果您卡在其中的一部分,请告诉我:)