繁体   English   中英

node.js websocket聊天以处理平行颜色

[英]node.js websocket chat to handle parallel colors

我正在做一些需要聊天应用程序的项目。 我决定在此处测试一些node.js / websocket版本: http : //martinsikora.com/nodejs-and-websocket-simple-chat-tutorial

一切都完美,但是正如他在本教程结尾提到的那样:

与Apache不同,Node.js并不为每个连接使用进程。

这意味着在7位用户登录后,将使用每种硬编码颜色,然后将白色用作用户名样式。

// Array with some colors
var colors = [ 'red', 'green', 'blue', 'magenta', 'purple', 'plum', 'orange' ];
// ... in random order
colors.sort(function(a,b) { return Math.random() > 0.5; } );

 userName = htmlEntities(message.utf8Data);
 // get random color and send it back to the user
  userColor = colors.shift();
  connection.sendUTF(JSON.stringify({ type:'color', data: userColor }));
  console.log((new Date()) + ' User is known as: ' + userName
          + ' with ' + userColor + ' color.');

是否可以允许两个用户使用相同的颜色? 谢谢

您最好只是在每个请求上随机选择一种颜色(这意味着您不必预先对colors数组进行随机组合)。 是的,这意味着有时两个连续的用户将获得相同的颜色; 那是真正随机性的固有属性,而不是人们错误地想象随机性是什么。

您不应该使用Array.shift(),因为它会从colors数组中删除一个元素,因此基本上在7个用户之后,您的数组为空。

只是生成一个随机ID

var idx = Math.floor(Math.random()*colors.length)
.....
({ type:'color', data: colors[idx] })

完成后:

usercolor = colors.shift();

添加此行:

colors.push(usercolor);

这会将返回的颜色放回另一端的数组中。 最终结果是它将一遍又一遍地循环显示您的七种颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM