1

我正在使用 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 呢?

任何帮助表示赞赏^ ^

4

1 回答 1

1

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

例如。

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

提供 Large UpperLimit Like 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();
于 2013-06-16T09:57:28.130 回答