消息推送这个东西从有了互联网就出现了,但直到出现了HTML5的Websocket,这个东西才算真的,更好了得到了解决,因为之前的方式,我们公认为,它对服务器的压力太大了,客户端不断的在做polling工作,直到服务端有了消息,然后将消息获取过来,这种方式,始终是被动式的,并且,通过浏览器发送的请求,在HTML5出现之前都是HTTP方式的,这种一个请求,一个响应的方式不能很好的实现一个长链接的保持,直到出现了websocket,它可以使一个客户端与服务端保持一个长链接,这事实上,也是实现服务器消息推送到客户端的基础。
2000年之前为第一波消息推送技术,使用的概念叫Webcasting。大致思想就是用户来服务端注册一个或者多个通道channel,然后服务端确定给某些个channel或某个channel发送消息。2000到2007年最火的词叫comet,比如有Polling(这个是最普通的轮询),Long Polling(把HTTP的响应锁住,当有消息时,通过channel返回客户端),但是不管什么技术,都仅限浏览器,而又因为浏览器只能发起HTTP的单向的通信请求,所以,人们就想起了更稳定的长链接方式socket,但是Socket方式是走TCP协议的,浏览器如何能发起TCP连接呢?HTML5的Websocket技术就解决了这个问题。
Websocket其实是一些老技术的结合,本身并不是一种新的技术,但是一种新的协议,它的地址形式如ws://192.168.0.3:8090,wss://192.168.0.3:8090,后面的地址形式是加密的,就是HTTP协议地址有http和https一样。
Websocket它首先向服务器发一个HTTP请求,与服务器握手成功后,再以TCP的方式进行数据传输,所以Websocket其实是结合了HTTP和TCP协议的一种新的协议方式,但本身的技术是老的,呵呵。
WebSocket 规范的目标是在浏览器中实现和服务器端双向通信。双向通信可以拓展浏览器上的应用类型,例如实时的数据推送(股票行情)、游戏、聊天等.
第一回 认识Websocket及原来的消息推送方式
第二回 SignalR的出现,改变了这一切
第三回 SignalR与MVC搭建消息推送环境
http://www.asp.net/signalr
http://baike.baidu.com/view/3623887.htm