web聊天程序,ajax+服务器推送技术

web聊天技术一般用ajax请求服务器,方式有多种,比如定时几秒请求一次,或长连接什么的。我个人还是喜欢“服务器推”这种模式,它不用定几秒请求一次让服务器大大减压。长连接什么这个不懂什么意思不管了(额,不知道”服务器推“属于哪一种偷笑)。

"服务器推送",是指当有消息时就把消息从服务器分发下来。从字面上看这个HTTP协议好像不能实现,因为HTTP是有请求才有响应的。即然这样,那我们换个思路想一下,即要实现”服务器推“又要尊询HTTP,那么我们能不能把请求给挂起来呢,当然可以!

我们知道一个HTTP请求就是一个新线程,那么我们就把所以获取消息的请求的线程给suspend()起来,这里为什么不用wait或sleep,用sleep是定时沉睡,所以不能智能化,至于wait这个东西必须要线程用到synchronized这个东西,否则会产生异常,不深研这个了(或许可以用wait,只是本人对线程不很熟所以不说这个了)。

当有消息发送上来的时候我们就用resume(),把挂起的所有消息线程唤醒(唤醒之前别忘了把消息用printwriter写进流)。

这样第一轮消息成功接收,当客户端成功响应时我们在js回调方法里产即再次调用ajax获取消息请求。基本思路完成.

在这期间我们不需考虑很多细节问题比如,HTTP挂起超时或session失效什么的。

不写了有不懂的或感兴趣的加 +qq 317822276

JSP的简单例子http://download.csdn.net/detail/bichir/5088881,其他的如asp.net,原理一样.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章