宁波网站制作的时间机制

发布时间:2015-4-5 16:52:21

宁波网站制作的时间机制

  一个有效的信息包含了带有用户名(user)、文本(text),以及信息显示颜色color的JavaScript对象,每个用户那行信息的文本颜色都不一样。颜色是由服务器分配给用户的,而换行是由客户端完成。后面的if语句用于査询刚收到的信息是否仍然来自同一用户。如果是,则将变量ele的innerHTML值设为接收到的文本;若结果来自不同用户或者这是第一条信息,则使用div元素创建一个变量名为ele、ID为broadcast的新段落。然后变量currentUser的值将被设为当前用户:
  if(currentUser==msg.user){ele.innerHTML=msg.text:
  }else{
  宁波网站制作认为ele=document.createElement("p");
  $("broadcast").appendChild(ele);ele.style.color=msg.color;ele.innerHTML=msg.text;currentUser=msg.user;};}
  }-
  functionsendmsg(){ws.send($("taM).value);ws.onclose=function(e){$("status").innerHTML='offline*;
  ${"status").style.color='recT;
  ^
  window.onunload=function(){ws.close();};文本区域的的每次按键都会触发sendmsgO函数,并将文本区域的所有内容传给WebSocket。
  若与WebSocket的连接因任意原因终止(举例来说,网络连接故障或服务器故障),WebSocket对象将激活close事件并调用ondose函数。在此例中,我们所作的是将状态行设为红色的“offline”。在离开网站时(window.onunload),我们将明确地关闭WebSocket,并从服务器上注销。
  与客户端相同,服务器运行也是基于事件机制。每次建立连接或每次收到信息,都将引发一个connection或message事件,并通过我们编写的JavaScript代码作出响应。在脚本开始处,我们先加载node-websocket-server库,它位于目录lib/下,文件名为ws.js。一个新的WebSocket对象被分配给变最server:
  varws=require(—dirname+'/lib/ws*),server=ws.cTeateServer();varusercols={}:
  server.aJdListener(MconnectionH,function(conn){varh=conn,server.manager.length*70;user_cols[conn.id]="hslt"+h+M,l00%,30%)M;varmsg={};msg.user=conn.id;msg.color=user一cols[conn.id];msg.text="Anewuserhasenteredthechat";conn.broadcast(N.stringify(msg));第一个事件句柄(connection)用于控制新的连接。如节,我们用HSL方法(译者注:HSL声明,Hue(H)、饱和度Saturation(s)和亮度Lightness(L),—种定义颜色的方法)将颜色依次分配给用户:每个用户的颜色亮度依次递增70°(用户数量从数组conn._server.manager中获得)。颜色以conn.id作为索引保存在变量user_cols中。变量msg用于保存已分配的颜色,以及新用户进人的提示信息,然后通过conn.broadcast方法以JSON字符串形式发送。node-websocket-server服务器的这个函数会将信息广播给除了引发当前事件之外的所有客户端,这也正是我们需要达到的目的:所有用户都得到通知——“一个新用户加入了聊天”。
  conn.addListener("message",function(message){varmsg={};message=message.replacef//g,"Sgt;");
  msg.text=message;
  msg.user=conn.id;
  msg.color=user一cols[conn.id];
  conn.write(DSON.stringify(msg));
  conn.broadcast(DSON.stringify(msg));
  );
  第二个用于响应message事件的函数会过滤掉信息中的HTML标签起始字符(“<”与“>”),以确保当中不包含脚本代码之类的东西。可靠的程序应当更为彻底地检查输人,以免道到可能的攻击。毕竟信息将广播给所有客户端并显示在它们的浏览器中,这是一个理想的攻击环境。跟connection事件类似,我们将所需内容放入局部变量msg、并以JSON字符串形式发送。不过在这里,它将被发送两次:第一次通过writeO方法发送给当前用户,第二次通过broadcastO方法发送给所有其他用户。
  WebSocket服务器将要完成了。但我们还需要创建一个事件句柄,用来关闭连接以及实际开始服务器:
  server.addListenerf"close",function(conn){varmsg={};msg.user=conn.id;msg.color=usercols[conn.id];msg.text="Auserhasleftthechat";conn.broadcast(]SON.stringify(msg));});server.listen(7);
  如同connection事件一样,在close事件中,所有用户也会收到一条信息,告诉他们“一个用户离开了聊天”,然后服务器被绑定至端口7并开始接收査询。
  本文由乐华网络编辑,转载请注明出处
  宁波网站制作www.leseo.net
上一篇:
为每一个你所要比照剖析的网站新建一列内容。然后再新建两列,一列是你现有的网站在这些比照元素项目中的体
下一篇:
在网站上增加增加回访的设置每个网站都要努力方案成为一个用卢来了还想再来的本地。网站能够取得用户更多重
关于乐华
乐华介绍
乐华思维
人才招聘
使用条款
隐私保护
RSS订阅
网站地图
新闻动态
乐华观点
行业动态
频道介绍
服务介绍
案例展示
品牌研究
品牌理论
品牌体系
联系我们
400-680-2900
社会媒体
微信公众平台
微信公众平台