RealtimeWebRealtimeWeb实时信息流推实时信息流推送送聂永yong
boy@gmail
comhttp://www
blogjava
net/yongboy/提纲•推送实现技术/历程•客户端如何选择•Java支持现状•socket
io•RealtimeWebJavaAppletsJavaApplets客户端脚本–java
socket建立Socket连接–要求本地安装JRE,不够轻量–微软和Sun公司不作为,已淡出人们视野轮询(Polling)•简单易用,容易实现•所有浏览器都支持•短连接•每次请求,立刻返回•JSONPPolling可跨域•ScripttagPolling可跨域缺点:•建立大量连接•服务器端并发压力大•很少被使用到示范代码varpolling=function(){$
get("getServerTime",function(data){$("#result")
html(""+data+"");},"text");}setInterval(polling,10000);//每10秒请求一次轮询-工作机制长轮询(LongPolling)•Http1
1Connection:keep-alive长连接协议•服务器端数据就绪可立即返回•服务器若未就绪,连接不断开,等待一段时间•表现形式:XMLHttpRequestScripttagLongPollingJSONP流程图1
服务器端阻塞/挂起请求直到数据到达或超时,然后返回2
客户端处理服务器返回消息,再次发起请求3
在客户端建立连接所消耗期间,服务器端新数据需要暂时缓存XMLHttpRequestLongPolling•形式自由简单,采用较多•错误处理、超时管理可控性强•默认无法跨域•采用跨域资源共享CORS可部分实现跨域•浏览器支持CROS情况http://caniuse