Ajax 无循环的长轮询
一般来说,我对计算机是新手,特别是对网络开发是新手 我的问题是关于长投票 使用HTTP 1.0保持连接活动的简单方法是让ajax调用不断循环 更复杂的方法是将循环移动到后端,让服务器脚本仅在必要时发送应答 这是更好的,因为它不会给网络带来太大的压力,但它仍然需要不必要的计算机操作,这些操作源于不断循环以检查条件 两者之间的唯一区别是循环发生的位置 然而,这两种方法似乎都很老套 如何建立连接并仅在新的状态更改在某处产生中断时执行操作 这就是所谓的“websockets”吗 毕竟,这似乎是最复杂的做事方式,类似于电话系统Ajax 无循环的长轮询,ajax,networking,websocket,long-polling,Ajax,Networking,Websocket,Long Polling,一般来说,我对计算机是新手,特别是对网络开发是新手 我的问题是关于长投票 使用HTTP 1.0保持连接活动的简单方法是让ajax调用不断循环 更复杂的方法是将循环移动到后端,让服务器脚本仅在必要时发送应答 这是更好的,因为它不会给网络带来太大的压力,但它仍然需要不必要的计算机操作,这些操作源于不断循环以检查条件 两者之间的唯一区别是循环发生的位置 然而,这两种方法似乎都很老套 如何建立连接并仅在新的状态更改在某处产生中断时执行操作 这就是所谓的“websockets”吗 毕竟,这似乎是最复杂的做
谢谢。如果您只想使用js,您可以使用以下内容: 问题是您必须每次打开连接,除非您可以在服务器端保持连接打开:
(function poll(){
setTimeout(function(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
//Setup the next poll recursively
poll();
}, dataType: "json"});
}, 30000);
})();
使用websocket,您可以实现如下相同的功能:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect("http://localhost");
socket.on('something', function (data) {
//do something with data
socket.emit('somethingelse', { my: 'data' });
});
</script>
变量套接字=io.connect(“http://localhost");
socket.on('something',函数(数据){
//处理数据
emit('somethingelse',{my:'data'});
});
从您的问题中,我了解到在这种情况下,可能会对AJAX长拉以及服务器与客户端的功能产生一些混淆
让我们从头开始。与Websocket连接和某些HTTP流技术不同,HTTP连接在客户端(浏览器)完成数据下载后关闭
只有客户端(浏览器)可以启动与服务器的网络连接。服务器无法启动连接
这一安排提出了两个问题: