自动发货>收到卡密后>用"QQ登录"方式到本站>在线充值它
资源导航
当前位置: 博学网 >电脑教程 > 语言汇编

捷训 Node.js 视频学习教程 共12集

  • 视频资源大小:193 KB 更新时间:2014-12-23 00:13:43
  • 类型:博学资源 观看方式:百度网盘

  • 类别:电脑教程 > 语言汇编 Tags:
  • 提醒:开通VIP会员全站免费学 推荐星级:

资源简介:

 客户端和服务器端完成消息协议定义之后,我们就可以分别实现消息的构建和消息的解析,下面我们首先分析服务器端如何对客户端发来的消息进行解析。之前我们介绍,当客户端连接到服务器之后,就会触发服务器的connection事件,在这个事件的处理函数中,其参数就是一个socket对象,通过对这个Socket对象添加data事件处理,我们就可以接收来自客户端的数据。我们通过对不同的命令码来实现对消息的解析。对于客户端发送的消息,我们首先需要执行的是将消息进行分割,通过分割我们可以得到每一个消息域,比如add消息:

add|www.jiesoon.com|jiesoon|jiesoon@jiesoon.com|3|3000
我们使用“|”对这个消息进行分割,分割之后便会得到一个大小为6的数组,其内容:
 
view plaincopy to clipboardprint?
fields = ['add',  
'www.jiesoon.com',  
'jiesoon',  
'jiesoon@jiesoon.com',  
'3',  
'3000'  
]  
我们在上一节定义了每一个消息的格式,那么在解析消息的时候,我们可以根据不同的命令进行不同的解析。因此,我首先需要做的是判断这个消息是什么类型的消息,如何判断呢?直接取得分割后的第一个元素fields[0],通过这个数值再与命令码进行比较即可,如下:
 
view plaincopy to clipboardprint?
switch(fields[0]){  
case 'add':  
break;  
  
case 'find':  
break;  
  
case 'edit':  
break;  
  
case 'remove':  
break;  
  
default:  
    console.log('Unknown message');  
}  
在上述的代码中,我们通过第一个消息域的内容与各个命令码进行比较,如果比较的结果相等,那么就会执行后续的代码。
 
add消息
 
add消息是向服务器中添加一个网站信息,它含有6个消息域。在执行消息分割之后,并确认了其为add消息,那么我们首先会判断这个域是否为6个消息域,如果发现其包含的消息域个数不符,那么我们就认为是一个非法的消息,不需要在进行处理;如果消息合法,那么我们会提取出这个网站的5个信息:域名,名称,联系人的电子邮件地址,网站的年龄和点击量。有了这个5个信息之后,我们就可以创建一个WebSite对象,将这个信息构建为一个WebSite,通过数组的push方法将其保存到一个数组中,见下面的代码:
 
view plaincopy to clipboardprint?
//add|www.jiesoon.com|jiesoon|jiesoon@jiesoon.com|3|3000  
if(fields.length != 6){  
    console.log("Invalid fields");  
    break;  
}  
  
var domainName = fields[1];  
var name = fields[2];  
var email = fields[3];  
var age = fields[4];  
var click = fields[5];  
  
var website = {};  
website.domainName = domainName;  
website.name = name;  
website.email = email;  
website.age = age;  
website.click = click;  
  
websites.push(website);  
find消息
 
find消息是对给定的网站域名在当前的服务器上执行查找操作,如果在服务器中找到一个域名与给定的域名相等,那么就表示这个网站存在于当前的服务器中,通过打印出一条消息给出这个网站信息所在的索引位置。这个find消息与上面的add消息不同,它只包含有两个消息域:edit命令码和待查找的域名。所以在确认find消息的时候,我们只需要判断所得到的消息域的长度是否为2就可以了。如果条件符合,那么我们就遍历当前的websites数组,依次获取一个WebSite对象,并取得这个对象的域名信息,再与传入的域名进行比较,根据比较的结果来决定是否找到对应的网站。
 
view plaincopy to clipboardprint?
//find|www.jiesoon.com  
if(fields.length != 2){  
    break;  
}  
var domainName = fields[1];  
  
for(var i = 0; i < websites.length; i++){  
    console.log(domainName + ":" + websites[i].domainName);  
    if(domainName === websites[i].domainName){  
        console.log("find at " + i);  
        break;  
    }  
}  
break;  
edit消息
 
edit消息是对指定的网站信息进行修改,这个“指定的网站信息”是通过这个edit消息决定的。也就是这个消息的第二个域。这个edit消息相对于add消息,其内容还要多一个域名信息,这个信息就是用来进行查找的。之后才是更新后的网站域名信息。对于这个消息的解析,首先是判断edit消息的消息域个数,正确的个数应该为7,如果结果不匹配,那么将不会执行后续的修改操作。查找的操作与上述的方法一直, 从第一个元素开始遍历整个数组,知道找到对应的元素位置。对于修改操作,我们去掉了像add消息解析中的5个变量,直接使用fields中的后5个元素作为网站的域名信息。
本软件是会员软件,如果你是会员,请登陆。如果不是会员请注册

用户评论

   

评论摘要(共 0 条,得分 0 分,平均 0 分)



用户名:

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

通知管理员