WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTTP最大不同是==>
1.WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;
2.WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。
1 轮询 客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。客户端会轮询,有没有新消息。这种方式连接数会很多,一个接受,一个发送。而且每次发送请求都会有Http的Header,会很耗流量,也会消耗CPU的利用率。
2 长轮询 长轮询是对轮询的改进版,客户端发送HTTP给服务器之后,有没有新消息,如果没有新消息,就一直等待。当有新消息的时候,才会返回给客户端。在某种程度上减小了网络带宽和CPU利用率等问题。但是这种方式还是有一种弊端:例如假设服务器端的数据更新速度很快,服务器在传送一个数据包给客户端后必须等待客户端的下一个Get请求到来,才能传递第二个更新的数据包给客户端,那么这样的话,客户端显示实时数据最快的时间为2×RTT(往返时间),而且如果在网络拥塞的情况下,这个时间用户是不能接受的,比如在股市的的报价上。另外,由于http数据包的头部数据量往往很大(通常有400多个字节),但是真正被服务器需要的数据却很少(有时只有10个字节左右),这样的数据包在网络上周期性的传输,难免对网络带宽是一种浪费。
3 WebSocket 现在急需的需求是能支持客户端和服务器端的双向通信,而且协议的头部又没有HTTP的Header那么大,于是,Websocket就诞生了!流量消耗方面,相同的每秒客户端轮询的次数,当次数高达数万每秒的高频率次数的时候,WebSocket消耗流量仅为轮询的几百分之一
WebSocket协议原理 Websocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。
Websocket的数据传输是frame形式传输的,比如会将一条消息分为几个frame,按照先后顺序传输出去。这样做会有几个好处:
1 大数据的传输可以分片传输,不用考虑到数据大小导致的长度标志位不足够的情况。
2 和http的chunk一样,可以边生成数据边传递消息,即提高传输效率。
websocket的基础使用: 由于代码已经写过了,就直接上图了。

websocket的心跳机制,监测websocket是否一直处于链接状态。我这边暂时设置的心跳频率是30秒每次

通过readyState可以判断链接的状态。也可以直接使用现成的API来进行事件的处理。
onopen ---> 表示websocket链接成功。
onmessage --- > 表示接收到了消息
onclose ---> 表示关闭了链接
onerror ---> 表示链接出错
json-rpc是基于json的跨语言远程调用协议。比xml-rpc、webservice等基于文本的协议数据传输格式;相比于hessian、java-rpc等二进制协议更便于调试、实现、扩展,是很优秀的一种远程调用协议。眼下主流语言都已有json-rpc的实现框架,java语言中较好的json-rpc实现框架有jsonrpc4j、jpoxy、json-rpc。三者之中jsonrpc4j既可独立使用。又可与spring无缝集合,比較适合于基于spring的项目开发。
总结下,jsonrpc4j主要优点有:
代码编写简单 体积小巧 与Spring完美整合 1、JSON-RPC协议描写叙述 json-rpc协议很easy,发起远程调用时向服务端数据传输格式例如以下:
{"method": "sayHello", "params": ["Hello JSON-RPC"], "id": 1}
參数说明: method: 调用的方法名 params: 方法传入的參数。若无參数则传入 [] id : 调用标识符。用于标示一次远程调用过程 server其收到调用请求,处理方法调用,将方法效用结果效应给调用方;返回数据格式:
{
"result": "Hello JSON-RPC",
"error": null,
"id": 1
}
參数说明: { result: 方法返回值。若无返回值。则返回null。 若调用错误,返回null。 error :调用时错误,无错误返回null。 id : 调用标识符,与调用方传入的标识符一致。 以上就是json-rpc协议规范,很easy,小巧。便于各种语言实现。 }
未完,待续 。。。。