即时通讯笔记
轮询:(不实用)
客户端拉拽/client pull
客户端以一定时间间隔向服务端发出请求或服务器会在http响应头/文档标记中插入指令,让浏览器“在5秒内再次装入这些数据”或“10秒内前往某URL装入数据”Comet长连接的服务器推送Server push,有两种实现方式:长轮询机制,流技术
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/comet4j例子:http://www.cnblogs.com/xiaoMzjm/p/3896108.html
长轮询机制/long-polling
基于ajax,服务端没有数据更新的时候,连接仍会保持一段时间直到数据或状态改变或时间过期
流技术/长连接
基于iframe及htmlfile的流方式,浏览器再请求头中:Content-type:multipart/x-mixed-replace,这个请求头会一直与服务器保持http连接,就像文件上传/下载一样,可以长时间保持http连接WebSocket通过tcp连接直接交换数据
http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/JavaEE7规范了一系列API包括支持WebSocket规范,Tomcat在7.0+实现了WebSocket规范:
http://www.infoq.com/cn/news/2013/07/ee7-websocket-support
html5+javaee7实现websocket的例子:
http://www.oschina.net/translate/java-ee-html5-websocket-example
websocket的独立实现(应用于低版本环境):
http://java-websocket.org/
websocket实现列表:
https://java.net/projects/websocket-spec/pages/WebSocketAPIs/text