参考:
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ 讲CMET的
http://www.cnblogs.com/zhaozhan/archive/2010/09/08/1821834.html Flash XMLSocket实现
目前两类解决方案:
- 1 基于套接口:浏览器安装插件,RMI、CORBA
- 2 基于HTTP长连接:无须浏览器安装插件
1 基于套接口:
1.1 Flash XML Socket
这个XML Socket是Flash提供的,所以页面部分的JavaScript得需要跟Flash配合,即跟Flash的AS配合。
AFLAX技术(Asynchronous Flash and XML):构建充当了 JavaScript 与 Flash XMLSocket 桥梁的 Flash 程序,以及如何在 JavaScript 里调用 Flash 提供的接口
缺点:
- 客户端需要安装Flash
- XML Socket无HTTP隧道功能,不能穿过防火墙
- 套接口得支持
1.2 Java Applet
java applet与服务端建立连接,但不能在收到服务端信息后通过javaScript技术去更新HTML页面。
2 HTTP长连接
以下是两种Comet技术的实现模型:
2.1 AJAX长轮询方式
在 JavaScript 里处理 XMLHttpRequest 从服务器取回的数据,然后 Javascript 可以很方便的去控制 HTML 页面的显示。异步,而且客户端可以和服务端持续沟通,
使用 AJAX 实现“服务器推”与传统的 AJAX 应用不同之处在于:
- 服务器端会阻塞请求直到有数据传递或超时才返回。
- 客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。
- 当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。
优点:
- 请求异步发出;
- 无须安装插件,IE、Mozilla FireFox 都支持 AJAX。
2.2 iframe及htmlfile的流方式
在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。
iframe 服务器端并不返回直接显示在页面的数据,而是返回对客户端 Javascript 函数的调用,如
“<script type="text/javascript">js_func(“data from server ”)</script>
”。
服务器端将返回的数据作为客户端 JavaScript 函数的参数传递;客户端浏览器的 Javascript 引擎在收到服务器返回的 JavaScript 调用时就会去执行代码。
缺点:
- IE、Morzilla Firefox 下端的进度栏都会显示加载没有完成,而且 IE 上方的图标会不停的转动,表示加载正在进行。Google使用一个称为“htmlfile”的 ActiveX 解决了在 IE 中的加载显示问题。
3 Comet开源框架:Pushlet
3.1 观察者模型
http://www.cnblogs.com/java-my-life/archive/2012/05/16/2502279.html
Demo:test.java
3.2
4 wap push技术
参考:
1 http://blog.oasisfeng.com/2013/04/14/dirty-secret-behind-weixin-charge-gate/
2 http://blog.csdn.net/thl789/article/details/7704127
3 http://blog.csdn.net/thl789/article/details/7704527
4 http://blog.csdn.net/thl789/article/details/7705494
5 http://blog.csdn.net/thl789/article/details/7284383
参考1 提到微信占用信令的时,提到wap push,即短信业务的基础。
参考2 3 4分别讲述了Android中对于wap push的PDU封装、编码、解析情况。
参考5则描述接收SMS的情况,实际上开一个RILReceiver线程来循环监听。