Ama*_*mar 13 javascript ajax jquery webpage
我知道我们可以通过轮询定期更改来做到这一点.这可以通过AJAX实现(例如jQuery.load()与之一起使用setInterval()).
但我想知道还有其他方法吗?其他成本较低的方法或更有效的方法?一个很棒的聊天客户端遵循什么逻辑?一旦你开始打字,另一端就会知道你正在打字.
我们在stackoverflow上遵循什么机制来更新upvote计数或显示已经进行了编辑等等而没有刷新页面?
Mau*_*ice 21
在保持客户端和服务器同步(接近)实时时,有三件事情立即浮现在脑海中:
long polling:你已经提到过这个,你在客户端设置了一个定时器,每隔10秒就会触发一个新的AJAX请求.这可能是3中最"低技术"的,也是效率最低的; 但它也是最兼容的(意味着它适用于所有浏览器,甚至像IE6/7这样的东西)
WebSockets:sdespont在评论中已经提到过这个.虽然WebSockets比长轮询更有效(因为它只是让双向客户端 - 服务器通信无限期地打开),但如果你所要做的就是从服务器获得定期更新,那么它可能是一个非常严厉的解决方案.Firefox和Chrome的所有版本都支持它,IE在IE10中增加了支持
服务器发送的事件:这个事件似乎不太受欢迎(或者只是不太知名).它允许服务器向客户端发送更改(与客户端请求来自服务器的更改相反,如长轮询的情况).这也只是一种单向通信(服务器 - >客户端),并且在请求完成后连接关闭(与双向通信保持打开的WebSockets相反).再一次,并非所有浏览器都支持它,并且根本没有IE支持
这也是一篇很好的文章,解释了更现代的客户端 - 服务器通信方式之间的差异.如果您想了解有关服务器发送事件的更多信息,这是一个很好的写作
| 归档时间: |
|
| 查看次数: |
8455 次 |
| 最近记录: |