ajax 隔x秒发送一次,如何使用XAJAX和PHP编写实时聊天?

本文探讨了如何通过智能轮询策略和交互设计来模拟即时聊天体验。建议在用户发送消息时立即显示,并在一定时间间隔内逐步添加新消息,以避免一次性加载过多。同时,根据用户活跃度调整轮询频率,并利用静态文件提高服务器响应速度。此外,还提出了使用AJAX和挂起响应的技术以进一步优化性能。

不可以.客户必须重复“轮询”服务器.

我认为这里的关键是思考交互设计.诀窍是欺骗用户认为聊天是即时的,但实际上每1或2或3或10秒更新一次.

思路:

1)当用户发送消息时,直接在聊天中显示它并触发轮询.

2)如果一个民意调查返回来自其他用户的多条消息,请不要一次性添加它们,实际上在1-2秒左右的时间内添加它们,随机间隔,使它看起来像是在进来“即时”和独立. (如果一堆消息立即进入,用户很快就会意识到聊天在那里更新,而不是一直在更新.)

3)如果用户闲置x个时间.每10秒左右将轮询率降低一次.

4)如果用户处于活动状态,即发送大量消息,则更频繁地进行轮询.

5)为聊天最后更新时写入的每个频道都有一个静态文件.例如文件chat-teenfun-lastupdate.txt的内容为1224934239或您喜欢的任何时间格式.静态地提供此文件并让客户端轮询此文件以检查通道是否已更新,而不是调用chat-poll.PHP?ch = teenfun进行动态检查.静态文件的速度提高了大约10-100倍,具体取决于动态脚本所涉及的工作,当您获得250个用户轮询时,您将需要它.

祝好运并玩得开心点!

/ 0

PS.或者,您实际上可以让客户端对服务器执行ajax调用并使它们“挂起”.那是你接受他们的请求并假装开始发回数据,但你只是暂停.当事情发生时,您使用适当的数据完成响应.为了实现这一点,我相信你需要编写自己的HTTP服务器,具体做到这一点,因为你不能在内存中挂起250个PHP进程.也许Lighttpd可以通过这种方式以某种方式使用LUA缓存模块.我不知道.虽然会很有趣.地狱我得尝试一下:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值