我正在为使用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?
感谢任何帮助^ ^
答案 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();