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

时间:2013-06-16 05:15:21

标签: javascript node.js url express socket.io

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

为了避免来自第三个人的影响,我想为准备玩的两个人生成特定的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?

感谢任何帮助^ ^

1 个答案:

答案 0 :(得分:1)

生成UNIQUE随机网址有很多种方法 1)使用时间戳并将其附加到您的预定义URL 2)使用随机数生成器。这可以通过纯javascript函数Math.Random()甚至是节点

提供的函数来完成

例如

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

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

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

除此之外,正如我所说,您也可以使用该节点执行相同的任务。有一个名为node-uuid的模块可以执行类似的任务。请参阅此问题:generate URL on node.js server

获得唯一的URL以及对要向其发送到同一生成的URL的客户端的引用。然后使用以下内容重定向它们:

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