消息推送从始至终~目录

认识它

消息推送这个东西从有了互联网就出现了,但直到出现了HTML5的Websocket,这个东西才算真的,更好了获得了解决,由于以前的方式,咱们公认为,它对服务器的压力太大了,客户端不断的在作polling工做,直到服务端有了消息,而后将消息获取过来,这种方式,始终是被动式的,而且,经过浏览器发送的请求,在HTML5出现以前都是HTTP方式的,这种一个请求,一个响应的方式不能很好的实现一个长连接的保持,直到出现了websocket,它能够使一个客户端与服务端保持一个长连接,这事实上,也是实现服务器消息推送到客户端的基础。javascript

它的发展历史

2000年以前为第一波消息推送技术,使用的概念叫Webcasting。大体思想就是用户来服务端注册一个或者多个通道channel,而后服务端肯定给某些个channel或某个channel发送消息。2000到2007年最火的词叫comet,好比有Polling(这个是最普通的轮询),Long Polling(把HTTP的响应锁住,当有消息时,经过channel返回客户端),可是无论什么技术,都仅限浏览器,而又由于浏览器只能发起HTTP的单向的通讯请求,因此,人们就想起了更稳定的长连接方式socket,可是Socket方式是走TCP协议的,浏览器如何能发起TCP链接呢?HTML5的Websocket技术就解决了这个问题。java

新协议,老技术

Websocket实际上是一些老技术的结合,自己并非一种新的技术,可是一种新的协议,它的地址形式如ws://192.168.0.3:8090,wss://192.168.0.3:8090,后面的地址形式是加密的,就是HTTP协议地址有http和https同样。web

Websocket它首先向服务器发一个HTTP请求,与服务器握手成功后,再以TCP的方式进行数据传输,因此Websocket实际上是结合了HTTP和TCP协议的一种新的协议方式,但自己的技术是老的,呵呵。ajax

百度百科对websocket的阐述

目标

WebSocket 规范的目标是在浏览器中实现和服务器端双向通讯。双向通讯能够拓展浏览器上的应用类型,例如实时的数据推送(股票行情)、游戏、聊天等.浏览器

背景

在浏览器中经过http仅能实现单向的通讯,comet能够必定程度上模拟双向通讯,但 效率较低,并须要服务器有较好的支持; flash中的socket和xmlsocket能够实现真正的双向通讯,经过 flex ajax bridge,能够在javascript中使用这两项功能. 能够预见,若是websocket一旦在浏览器中获得实现,将会替代上面两项技术,获得普遍的使用.面对这种情况,HTML5定义了WebSocket协 议,能更好的节省服务器资源和带宽并达到实时通信。

原理

WebSocket protocol 是HTML5一种新的协议(protocol)。它是实现了浏览器与服务器全双工通讯(full-duplex)。
现不少网站为了实现即时通信(real-time),所用的技术都是轮询(polling)。轮询是在特定的的时间 间隔(time interval)(如每1秒),由浏览器对服务器发出HTTP request,而后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request的模式带来很明显的缺点 – 浏览器须要不断的向服务器发出请求(request),然而HTTP request 的header是很是长的,里面包含的数据可能只是一个很小的值,这样会占用不少的带宽。
而最比较新的技术去作轮询的效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通讯,但依然须要发出请求(reuqest)。
在 WebSocket API,浏览器和服务器只须要要作一个握手的动做,而后,浏览器和服务器之间就造成了一条快速通道。二者之间就直接能够数据互相传送。在此 WebSocket 协议中,为咱们实现即时服务带来了两大好处:
1. Header
互相沟通的Header是很小的-大概只有 2 Bytes
2. Server Push
服务器能够主动传送数据给客户端

目录

第一回  认识Websocket及原来的消息推送方式服务器

第二回  SignalR的出现,改变了这一切websocket

第三回  SignalR与MVC搭建消息推送环境asp.net

相关参考文章

http://www.asp.net/signalrsocket

http://baike.baidu.com/view/3623887.htmflex

相关文章
相关标签/搜索