如何用JS来写应用层协议

JavaScript017

如何用JS来写应用层协议,第1张

7e ....... 7e 为一个包数据

4. 4. 2标识位

采用Ox7e表示,若校验码、消息头以及消息体中出现0x7e,则要进行转义处理,转义

规则定义如下:

0x7e<——>0x7d后紧跟一个0x02;

0x7d<——>0x7d后紧跟一个0x01。

4. 4. 4校验码

校验码指从消息头开始,同后一字节异或,直到校验码前一个字节,占用一个字节

标识位------- 消息体------- 校验码------- 标识位 整个包内容。

上面基本上可以保证包的数据是正确接受的。然后就看你内容要怎么搞。你可以把json字符串以utf-8转字节放进去。然后另一边以utf-8解析。然后2边都解析被解析后的字符串为json对象来交互。

我只是提供思路。因为协议很多,http、email、jt808,很多很多你可以自己看,或者看别人的文章是怎样设计协议。

更多问题可以去php中文网问答社区提问http://www.php.cn/wenda.html,大神在线帮你解决,希望对你有帮助

JavaScript 的document对象中有一个location的子对象,其包括是属性如下:document.location.host //表示当前域名 + 端口号document.location.hostname //表示域名document.location.href //表示完整的URLdocument.location.port //表示端口号document.location.protocol //表示当前的网络协议所以通过上面第五条就能判断当前的网络协议了,具体判断如下:[javascript] view plain copyvar protocolStr = document.location.protocolif(protocolStr == "http"){console.log("protocol = " + protocolStr)}else if(protocolStr == "https"){console.log("protocol = " + protocolStr)}else{console.log("other protocol")}

主要介绍其中的五种实现方式:短轮询、Comet、Flash XMLSocket、Server-sent、WebSocket

1、短轮询

指在特定的的时间间隔(如每10秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。浏览器做处理后进行显示。无论后端此时是否有新的消息产生,都会进行响应

2、Comet

包括了长轮询和长连接,长轮询是客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求;长连接是在页面中的iframe发送请求到服务端,服务端hold住请求并不断将需要返回前端的数据封装成调用javascript函数的形式响应到前端,前端不断收到响应并处理

3、Flash XMLSocket

在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此 Flash 程序提供的socket接口与服务器端的socket进行通信。JavaScript 在收到服务器端以 XML 格式传送的信息后可以很容易地控制 HTML 页面的内容显示

4、Server-sent

服务器推指的是HTML5规范中提供的服务端事件EventSource,浏览器在实现了该规范的前提下创建一个EventSource连接后,便可收到服务端的发送的消息,实现一个单向通信。客户端进行监听,并对响应的信息处理显示

5、WebSocket

WebSocket是HTML5下一种新的协议,是基于TCP的应用层协议,只需要一次连接,便可以实现全双工通信,客户端和服务端可以相互主动发送消息。客户端进行监听,并对响应的消息处理显示

针对自己系统的应用场景选择合适的推送方案才是合理的,因此最后简单说一下实现个性化推送的两种方式。第一种很简单,直接使用第三方实现的推送,无需复杂的开发运维,直接可以使用。第二种就是自己封装,可以选择如今较为火热的WebSocket来实现系统的推送。

关于第三方推送平台,极光推送,操作简单,稳定性高,送达率快