我可以将socket.io客户端id转换为稍短的id而不会遇到碰撞风险吗
Can I convert the socket.io client id into a slightly shorter one without running into collision risks?
我可以将一个唯一的字符串转换为稍短的字符串而不会遇到碰撞风险吗?或者,如果没有,我能以某种方式创建一个更短的新的唯一代码吗?
我使用的是socket.io,我想使用设置会话的客户端的socket id作为要共享的代码,以便其他人加入该会话,但是像Kf-uLxBxzB_8xwHgAAAC
这样的代码对用户并不完全友好。我希望人们能够键入代码,如果他们选择的话,所以它需要尽可能短。
这种事情通常是怎么做的?我使用的是Node.js和客户端js。
风险解决方案
当套接字连接时,您可以直接更改它们的id:
socket = io.connect('http://localhost');
socket.on('connect', function() {
console.log(socket.io.engine.id); // old ID
socket.io.engine.id = 'new ID';
console.log(socket.io.engine.id); // new ID
});
安全解决方案
或者,您可以简单地将套接字保存在服务器端的对象中:
socket = io.connect('http://localhost');
var clients = {};
socket.on('connect', function() {
clients[customId] = socket.id;
});
var lookup = clients[customId];
简短的回答:不,如果不遇到碰撞风险,就无法缩短UID。
但是,请从用户的角度考虑这一点。复制和粘贴代码有什么困难?它有多长其实并不重要,是吗?
另一种选择是将会话UID映射到像heroku所具有的语义UID,例如"blazing-list-4652"。请参阅下面的示例,了解如何生成这样的名称。
如何以编程方式生成类似Heroku的子域名称?
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 将PHP变量传递给jQuery时遇到问题
- difference between '$(<%= DDL.ID %>) & $('
- 我的jQuery插件参数没有正确启动,遇到了问题
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- Href:当前DIV中的目标ID
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 我可以将socket.io客户端id转换为稍短的id而不会遇到碰撞风险吗
- Javascript -在选择id时遇到麻烦
- 通过javascript SDK和app id在facebook帖子上发表评论时遇到了很大的麻烦
- 使用“动态形状”从组中选择形状id时遇到问题
- 使用通配符选择对象ID时遇到问题