javascript – AJAX监听器而不是轮询?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – AJAX监听器而不是轮询?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1474字,纯文字阅读大概需要3分钟。
内容图文
![javascript – AJAX监听器而不是轮询?](/upload/InfoBanner/zyjiaocheng/732/e73e94c76b40482388171a3613c67345.jpg)
我在python中创建了自己的聊天网络服务器,想知道而不是AJAX每秒都调用一次服务器(下面的JS).我可以修改我的服务器,所以当它更新chat.html文件时,它会将其推送给所有客户端.有没有办法使用javascript让它听取任何收到的数据而不是轮询?
<script>
// Request the AJAX update the chat window every second
setInterval(function(){loadChat()},1000);
function loadChat()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("chatWindow").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","chat.html",true);
xmlhttp.send(null);
}
}
</script>
解决方法:
是的,当然有.您可以使用(至少)四种技术:
> WebSockets.这是最明显的解决方案.它允许您按需发送和接收消息,而无需轮询.但是,在服务器端实现它可能有点困难,因为它不是普通的HTTP.此外,旧浏览器不支持WebSockets.
>服务器发送的事件.这不太令人满意,但仍然适合您.有了它,您可以从服务器接收消息而无需轮询.它也更容易在服务器上实现,因为它只是普通的HTTP,除了连接没有关闭.它也不支持某些较旧的Web浏览器,但它比WebSockets更受支持,并且非常容易填充.
> COMET.这基本上是对以下内容的改进.基本上,你有一个隐藏在屏幕外的iframe.每当有事件发生时,您发送(并刷新!)脚本标记,但不要关闭连接.超时后,关闭连接.然后刷新iframe.这也很容易实现,是纯HTTP,不需要特殊的浏览器支持.但是,浏览器超时有所不同,这有点不太优雅.
>保持连接打开直到事件发生.这可能是最不可取的.只是在事件发生之前不发送响应.当事件进入或发生超时时,发送响应.当客户端收到响应时,重新连接.这也有些不雅,但它确实有效.
内容总结
以上是互联网集市为您收集整理的javascript – AJAX监听器而不是轮询?全部内容,希望文章能够帮你解决javascript – AJAX监听器而不是轮询?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。