我正在尝试编写一个可以与我的服务器一起使用的插件。每个页面加载都会调用我的服务器的 AJAX 调用以获取数据,服务器应该返回一个简单的字符串。
现在我试图了解这种程序的最佳方法是什么。
我应该在每次需要数据时创建一个 AJAX 调用,还是有什么方法可以创建一个开放连接(尽管网页发生了变化)以节省服务器电源?
我应该以某种方式听一些端口或类似的东西吗?
我还有其他选择吗?或者我应该怎么做才能以最有效的方式做到这一点?
我正在尝试编写一个可以与我的服务器一起使用的插件。每个页面加载都会调用我的服务器的 AJAX 调用以获取数据,服务器应该返回一个简单的字符串。
现在我试图了解这种程序的最佳方法是什么。
我应该在每次需要数据时创建一个 AJAX 调用,还是有什么方法可以创建一个开放连接(尽管网页发生了变化)以节省服务器电源?
我应该以某种方式听一些端口或类似的东西吗?
我还有其他选择吗?或者我应该怎么做才能以最有效的方式做到这一点?
您可以使用 HTML5 websockets (http://www.html5rocks.com/en/tutorials/websockets/basics/) 如果您使用这种方法,那么您将需要重新考虑您的网络服务器编程方式,因为 websockets 没有t 遵循 AJAX 做的请求-响应范式。相反,他们使用连接来传输数据,因此您需要在服务器上打开一个端口并收听它,实现方式取决于您使用的语言或框架。这快速且响应迅速,但仅适用于大多数现代浏览器。
其他方法是使用长轮询(http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery)。这被一些聊天客户端使用。它向服务器发送 AJAX 请求,服务器接收它并保持等待,直到数据可用,然后发送响应。然后客户端发出另一个请求,等待并重复。
可能您几乎从不想向客户端发送简单的字符串。使用 XML 或 JSON 对响应进行编码几乎总是更好。
只需创建一个简单的 AJAX 调用并将其放在每个页面上,或者将其保存为自己的文件并将服务器包含在每个页面的标题中。就那么简单!
$(document).load(function(){
$.ajax({
type: "POST",
url: "/where_your_string_is.php",
success: function(msg){
$("#stringHolder").html(msg);
}
});
});
Websockets API 允许双向通信,但我刚刚发现如果您只需要提取数据,可以使用另一个称为HTML SSE的选项。因此,如果您偶然发现了这个问题,也请考虑这个选项。