我需要找出一个可以随时改变的对象的状态.最好的情况是,如果对象发生变化,客户端会更新,但是我认为没有管道可以将更新推送到客户端而没有客户端首先要求它.
所以,我正在考虑通过jQuery ajax调用来实现轮询,该调用每5秒左右设置一次呼叫服务器.这是合理的解决方案吗?
如何检查用户是否在线并显示在线用户列表的最简单方法是什么?
我能想到的唯一方法是使用一些定期轮询服务器来更新上一个动作时间戳,当最后一个时间戳大于xx之前,用户被认为是离线的.但它似乎不是太有效的解决方案.
我有一个函数返回一个整数(社区网站上用户的当前信誉分数).根据他们的评论和提交的投票方式,这个数字往往会上升或下降.我想每隔30秒左右"轮询"一次,看它是否有变化,如果是,请更新我正在显示的数字.
在另一个StackOverflow线程中,我发现这个看起来很有用的JavaScript代码段:
function listen() {
$.get("/mylongrequestfile", {}, function(data) {
$("#mydiv").html(data);
listen(); // then launch again
}));
};
Run Code Online (Sandbox Code Playgroud)
我只是用我的函数替换/ mylongrequestfile吗?我正在尝试,但它没有那么好用.如何使用此代码或其他代码段每30秒抓取并显示此值?
我正在使用PHP,AJAX,MySQL数据库和大量jQuery来构建基于Web的聊天系统(类似于Facebook Chat).我坚持如何"倾听"即将进行的聊天......何时知道有人试图与我聊天......并且知道这是一个新的聊天,而不是现有的聊天.
现在,我正在轮询以查看数据库表中是否有新的插入,但它似乎效率很低......服务器的开销很大.
有没有办法接收通知,例如,在MySQL数据库的表中插入一行,以便不是经常轮询,我可以通知,然后去看插入什么?
如果有更好,更有效的方式来创建这种一对一的聊天关系,请给我一些建议.
谢谢,Hristo
我正在寻找一个关于使用AngularJS轮询数据的解决方案,我在stackoverflow找到了这里.
在这个解决方案(如下图所示)中,它使用一个javascript对象来返回response(data.response),如果我尝试将该data对象替换为一个简单的javascript数组它不起作用,我想知道为什么我需要去点符号以及为什么单个数组不起作用?(这将是很好的链接或解释与示例)
app.factory('Poller', function($http, $timeout) {
var data = { response: {}, calls: 0 };
var poller = function() {
$http.get('data.json').then(function(r) {
data.response = r.data;
data.calls++;
$timeout(poller, 1000);
});
};
poller();
return {
data: data
};
});
Run Code Online (Sandbox Code Playgroud)
试图总结我的目标(我想真正了解):哪里是var data = { response: {}, calls: 0 };可以var data = {};,然后response.data就可以直接设置好的数据data = r.data和 return {data: data};,为什么我需要靠点符号?
我想要一个用于测试与服务器的连接并返回状态消息的webapp。单击开始按钮后,我想每4秒轮询一次并返回一个状态文本。但是,如果我单击按钮,它将仅自动返回,而不会返回。这是我的代码:
index.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h1>My App</h1>
<h:form onkeypress="poll.stop()">
Server URL: <h:inputText id="name" value="#{helloBean.name}"></h:inputText>
<p:commandButton value="Start Watching!" onclick="poll.start()" />
<pre><h:outputText id="output" value="#{helloBean.playground}" /></pre>
<p:poll interval="4" listener="#{helloBean.getPlayground}" update="output" widgetVar="poll" autoStart="false" />
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
还有我的豆子:
@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {
public String getPlayground(){
if(name.length() < 3){
return "";
}
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss");
Date date = new Date();
String …Run Code Online (Sandbox Code Playgroud) 我很好奇从服务器端的角度来看,是否有某种类型的标准限制何时最好使用 Ajax 轮询而不是 SSE。
但是每 5 秒 1 个请求呢?我们如何计算 Ajax 或 SSE 的极限频率在哪里?
ajax-polling ×7
ajax ×3
javascript ×2
php ×2
angularjs ×1
asp.net ×1
asp.net-mvc ×1
chat ×1
long-polling ×1
mysql ×1
polling ×1
primefaces ×1
server ×1
syntax ×1