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

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

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

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

我现在在本地testing它。 在服务器端,我有服务器听一个端口。

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 .... 

我想我需要做的是提供一个button,当我检测到两个客户端进来。当他们点击它,它指示他们到一个生成的新的URL。

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

那么我怎样才能在服务器和客户端设置不同的url?

任何帮助是赞赏^ ^

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

例如。

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

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

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

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

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

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