
ajax长轮询
最近一直在研究ajax长轮询连实现即时通信,但是到底是个怎么轮询法?难道就是循环?还有ajax把数据发送到后台处理,后台怎么把数据自动的发送到客户端呢?他们是把消息数据存...
最近一直在研究ajax长轮询连实现即时通信,但是到底是个怎么轮询法?难道就是循环?还有ajax把数据发送到后台处理,后台怎么把数据自动的发送到客户端呢?他们是把消息数据存放到数据库中?还是用文本文件来存放,但是无论哪一种感觉都有弊端,存放在数据库中查询的时候,服务器压力必然增加,以文本文件存放很容易就丢失,当文件很大的时候,读取速度也会降低,求高手帮我解答一下,具体的一个流程是个什么样的?万分感谢,希望您回答的时候不要黏贴别的地方的答案,我分辨的出来,谢谢。
展开
展开全部
一般最原始的作法就是在客户端搞个定时器一直向后台请求,而ajax的长轮询与一般的http连接不一样,它发送的是长连接,比如说你发过去一个连接,它并不急于给你返回过来请求,而是等到后台有动作的时候才有相应,这样就减少了客户端的压力,现在很多地方都用到这种技术,比如说百度,新浪微博,比较成熟的框架有pushlet,另外servlet3.0也增加了异步的功能,也能很好的解决这个问题,HTML5在将来,这个问题就更简单了!如果你要研究,建议你深入的了解一下HTTP协议的内部工作原理,了解一下服务器的实现,希望能帮到你。
更多追问追答
追问
其实您说的那些我都理解,利用ajax实现,我发送一个请求,服务器会返回数据,这个我明白,但是我和另外一个人通信,那另外一个人是怎么获取到数据的呢?ajax不是只能给发送请求的客户端返回数据吗?
追答
你从一个客户端发送请求给服务器,服务器会受到这个请求,而另一个客户端正在做长轮询,所以你就可以把这条数据通知给它啊,至于你说的是文本文件还是数据库,以及资源的消耗,那些都是不能避免的,如果你真的想更快,那你直接可以把数据放在内存中,用一个Map将其存放,也是一个道理。建议你可以用框架做,DWR就完全能满足你的要求
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询