如何为使用socket.io的用户更改URL

How to change URL for users using socket.io?

本文关键字:用户 URL io socket      更新时间:2023-09-26

我正在用node.js, socket为两个玩家制作游戏。IO和express.

为了避免第三人来玩的影响,我想为两个准备玩的人生成特定的URL。

所以我的问题是,当两个人来的时候如何改变URL ?

我现在在本地测试它。在服务器端,我让服务器监听一个端口。

 var express = require('express');
 var SocketIO = require('socket.io');
 var http = require('http');
 var path = require('path');
 var app = express({
   views: path.join(__dirname, 'views')
 });
 app.use('/assert', express.static(path.join(__dirname, 'assert')));
 app.engine('html', require('ejs').renderFile);
 app.get('/', function (req, res) {
   res.render('home.html', {layout: false});
 });
 var server = http.createServer(app);
 var sio = SocketIO.listen(server);
 server.listen(8080);  
 function(...){...}

在客户端,我有套接字连接到某处。

 var socket = io.connect('http://' + location.host);
 var ....

我想我需要做的是提供一个按钮,当我检测到两个客户端进来。当他们点击它时,它会引导他们到一个生成的新URL。

所以有一个旧的URL和许多新的URL…

那么我如何在服务器和客户端设置不同的url ??

感谢任何帮助^ ^

生成唯一随机url的方法有很多1)使用时间戳并将其附加到您的预定义url2)使用随机数生成器。这可以通过纯javascript函数Math.Random()或node

提供的函数来完成。

var url = "http://www.yourHostName.com/"+(Math.Random()*(UpperLimit-LowerLimit)+(LowerLimit));

提供大上限,如100000(根据您的需要和预期流量)和LowerLimit = 0;或者像这样使用时间戳:

var url = "http://www.yourHostName.com/"+ new Date.getTime();

除此之外,正如我所说的,您还可以使用节点来执行相同的任务。有一个叫做node-uuid的模块可以做类似的任务参考这个问题:在node.js服务器上生成URL

一旦你有了唯一的URL和对客户端的引用,你想把它们发送到同一个生成的URL。然后使用以下命令重定向它们:

response.writeHead(301,
{Location: url};       //one you generated
);
response.end();