如何为使用socket.io的用户更改URL
How to change URL for users using socket.io?
我正在用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();
相关文章:
- 为什么是FB.注销用户功能不会重定向到我告诉它的 URL
- 将URL字符串${userid}替换为javascript对象中的实际用户id
- 对auth.logout的Facebook事件订阅仅选择性地将用户重定向到url
- 检查用户是否正在访问纯根url
- "“用户友好”;vimeo嵌入,从url获取嵌入代码
- 嵌入iframe URL以在wordpress中包含当前用户id
- 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中URL的最后一位
- 在相对于用户当前 URL 路径的不同路径中设置 Cookie
- 将特定于用户的 URL 列表与当前 URL 进行比较
- 从github url中查找用户、repo和路径
- 如何在不重定向用户的情况下更改地址栏URL(不使用历史API?)
- 添加/到URL的末尾将用户带到随机页面,并在其他页面上剥离图像
- URL中用户@的几个请求导致“;违反政策通知;来自Google AdSense
- 根据条件(Angularjs)允许用户访问URL
- 如何获得用户'的国家/地区,并转发到URL
- 如果用户更改了url并且呈现了错误的视图
- Chrome webRequest只侦听用户输入的URL
- 当用户将哈希添加到URL时,重新加载浏览器
- 如何识别用户在评论框中输入的URL
- 当用户按下回车键时,URL将附加一个问号