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

本文探讨了一种名为“服务器推送”的技术,该技术允许服务器主动将数据推送给客户端,减轻了服务器的压力并提高了效率。文章详细介绍了如何利用挂起的HTTP请求来实现这一目标,并提供了一个JSP的简单示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值