消息推送从始至终~目录

简介:

认识它

消息推送这个东西从有了互联网就出现了,但直到出现了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 规范的目标是在浏览器中实现和服务器端双向通信。双向通信可以拓展浏览器上的应用类型,例如实时的数据推送(股票行情)、游戏、聊天等.

背景

在浏览器中通过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的出现,改变了这一切

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

相关参考文章

http://www.asp.net/signalr

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:消息推送从始至终~目录,如需转载请自行联系原博主。

目录
相关文章
|
6月前
|
小程序 Java Maven
小程序订阅消息推送工具类
小程序订阅消息推送工具类
49 0
|
JSON 运维 JavaScript
教你如何快速接入微信消息通知,使用消息推送服务,「传息」推送消息到个人微信
教你如何快速接入微信消息通知,使用消息推送服务,「传息」推送消息到个人微信
1327 0
|
5月前
|
JSON 小程序 API
小程序(三十四)微信小程序开启订阅消息推送
我这里记录一下我在配置订阅消息推送的时候发生的一些小问题吧,算是经验,给没有做过的同学避个坑。 官方文档地址:小程序订阅消息 | 微信开放文档 (qq.com)
174 0
|
6月前
|
小程序 API 开发工具
小程序消息推送入门 (订阅消息推送)
小程序消息推送入门 (订阅消息推送)
197 0
|
9月前
|
消息中间件 前端开发 JavaScript
什么是消息推送?
使用Web 实时消息推送详解
225 0
|
10月前
|
监控
SpringBootAdmin自定义监控消息推送
SpringBootAdmin自定义监控消息推送
177 0
|
11月前
|
Web App开发 缓存 前端开发
🎊🎊🎊深入 ServiceWorker,消息推送,后台同步,一网打尽!
上一章讲到了ServiceWorker的基础使用,但是它的功能不仅仅只有这些,还有很多很多,比如消息推送,后台同步,甚至还有WebRTC,这一章我们来进阶ServiceWorker。
198 0
|
11月前
|
API Go 开发者
微信消息推送神器pushplus介绍,让消息推送更简单
微信消息推送神器pushplus介绍,让消息推送更简单
|
11月前
|
小程序 Java 开发者
微信小程序+Springboot实现订阅消息推送
微信小程序+Springboot实现订阅消息推送
452 0
|
12月前
|
缓存 小程序 Java
小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送
小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送
446 0