对于仅登录用户,我想以某种方式通知他们,如果他们有任何新的通知.
例如,假设一个成员向他们发送了一条私人消息,我想告诉用户他们有一条要查看的新消息(假设他们没有刷新页面).
使用Nodejs和redis,我将如何做到这一点?
注意:我只需要nodejs向用户发送一个小json,说他们有一条新消息.
我正在考虑的工作流程如下:
1. user is logged in, a new message is sent to them.
2. somehow using nodejs and redis and long-polling, nodejs communicates back to the logged in users browser they have a pending message.
3. when nodejs sends this push notification, I then call another javascript function that will call a rest service to pull down additional json with the message.
Run Code Online (Sandbox Code Playgroud)
我正在将nodejs集成到现有的应用程序中,所以我希望尽可能简单地使用nodejs来负责通知而不做任何额外的逻辑.
有人可以概述一下我应该如何解决这个问题吗?我应该以某种方式使用redis http://redis.io/topics/pubsub吗?
即使阅读了有关它的页面,我也不确定它是如何工作的.
假设我有一个带注册的聊天应用程序,它对 Apache 服务器进行长轮询。我已经阅读了一些资料,但我仍然感到困惑,并希望非常确定。根据我的理解,它可以是:
我非常倾向于第一个。你能帮我更正/扩展两者中的任何一个,或者如果两者都错了,请添加数字 3?谢谢!
我需要了解 android 中的长轮询以及如何在 Android IDE(Eclipse、IntelliJ Idea、Android Studio)中实现聊天项目?
问候
在 docker 本地运行 odoo v14 时,我经常收到以下错误消息:
odoo-14.0-stage | 2021-04-26 10:51:00,476 10 ERROR update odoo.http: Exception during JSON request handling.
odoo-14.0-stage | Traceback (most recent call last):
odoo-14.0-stage | File "/home/odoo/addons/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
odoo-14.0-stage | result = request.dispatch()
odoo-14.0-stage | File "/home/odoo/addons/odoo/odoo/http.py", line 683, in dispatch
odoo-14.0-stage | result = self._call_function(**self.params)
odoo-14.0-stage | File "/home/odoo/addons/odoo/odoo/http.py", line 359, in _call_function
odoo-14.0-stage | return checked_call(self.db, *args, **kwargs)
odoo-14.0-stage | File "/home/odoo/addons/odoo/odoo/service/model.py", line 94, in wrapper
odoo-14.0-stage | return f(dbname, *args, **kwargs) …Run Code Online (Sandbox Code Playgroud) 假设我有一个聊天程序,每次有人发送消息时,都会锁定并写入全局文件.接收客户端有一个挂起的xmlhttp请求,它等待使用此结构返回新更新的文件:
while (!hasNewdata())
{ sleep 3; }
print "$thenewdata";
sub hasNewData()
{
# determine if global file has been appended to.
}
Run Code Online (Sandbox Code Playgroud)
将文件大小发送到客户端然后在下一个轮询请求中返回服务器是一个很好的方法,因为我们现在可以检查文件大小是否与已发送回客户端的文件大小不同,所以我们知道有新数据.或者来回发送文件偏移是一种更好的方法,因此它知道在文件中检查新数据的位置?或者完全不同的方法,除了使用全局"聊天"文件之外的其他方法?
什么是确定'新数据可用'的一般方法
对那些投票的人来说,这不是一个真正的问题,这是绝对的生活.
我已经用谷歌搜索和搜索了一个月了,我找不到一个准确的例子,它实际上是使用php和mysql进行ajax长轮询.最好想找到一个用mysql和codeigniter进行ajax长轮询的例子.
任何人都会遇到这个问题并有一个很好的例子请告诉我.
任何读过这篇文章的人都认为他们知道我正在寻找的ajax长期投票请给我发电子邮件或告诉我这里.我几乎完成了使用Codeigniter的聊天应用程序,但我遇到了jquery/ajax长轮询部分是客户端的问题.我没有发布这个聊天应用程序,因为上次我发布了另一个聊天应用程序我在这里有另一个开发人员抱怨我发布的代码太多了.我准备将此代码发送给任何能够实际提供有效的ajax长轮询代码的人.
非常感谢.
我想对长轮询请求做一些澄清.我为长轮询编写了一个脚本,我在nginx(使用标准配置)上尝试了它并且它可以工作.我注意到了一些事情.如果服务器没有响应60秒后nginx在日志浏览器中返回503错误,可能(或应该)不会永远不会使请求过期,但仅在服务器响应时?如果有可能,我该怎么办?如果不可能,你建议我延长请求,直到服务器停止(60秒)或之前(表明多长时间)?如果之前,您如何建议我终止申请?
我有一些简单的问题.
我可以只使用AsyncTask对java进行长轮询吗?
class makepolling extends AsyncTask<String, String, String> {
String TAG = "AndroidPolling";
int CONNECTION_TIMEOUT = 900000;
int mHeartbeat = 10000;
int TIMEOUT_TOLERANCE = 5000;
String mPushURL = "https://my_serv_adress/service";
@Override
protected String doInBackground(String... arg0) {
String result = null;
DefaultHttpClient def = new DefaultHttpClient();
HttpParams httpParams = def.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, CONNECTION_TIMEOUT);
ConnManagerParams.setTimeout(httpParams, CONNECTION_TIMEOUT);
HttpPost httpPost = new HttpPost(mPushURL);
httpPost.addHeader("Accept", "application/json");
try {
Log.i(TAG, "Executing POST(PUSH) request " + httpPost.getRequestLine());
HttpResponse httpResponse = def.execute(httpPost);
Log.i(TAG, result);
Log.i(TAG, String.valueOf(httpResponse.getProtocolVersion()));
Log.i(TAG, String.valueOf(httpResponse.getEntity().getContent())); //For testing …Run Code Online (Sandbox Code Playgroud) 我想知道在将 celery 任务部署到工作人员后,有哪些选项可用于从浏览器监控 celery 任务?
我当前的应用程序堆栈是一个在扭曲内部运行的烧瓶应用程序,使用 celery 运行数十到数千个小型后台任务(更新存储库中的元数据,创建图像衍生品等)我设想使用 ajax 长轮询来监视状态由用户启动的 celery 任务。我将 redis 用于后端代理和结果。
我看到 celery 有一些命令行方法来监控任务,或者有一个 web 仪表板的花。但是,如果我想从发送到 celery 的特定任务中查看更详细的状态,那么该任务打印/写入日志文件,然后长轮询该文件以获取来自flask前端的更改是否更有意义?
此时用户可以说“更新这10,000个项目”,任务被发送到celery,前端很快就说,“作业已发送!”。而且任务确实完成了。但是我想让用户导航到“/status”并查看那 10,000 个小作业的状态 - 即使是滚动日志文件也可能会起作用。
任何建议将不胜感激。花了很多挠头,使这一步勾画出来的东西,但我纺纱我的车轮正好搞清楚什么从用户前端长查询。
我有以下Javascript代码,它始终询问服务器的一些数据.
;var EVENTS = {};
;(function($) {
EVENTS.Test = {
getEventsData: function() {
var events_request = $.ajax({
url: "test1.php",
contentType: 'application/json-rpc',
type: "GET",
timeout: 30000
});
events_request.done(function(results) {alert(results);});
events_request.fail(function(results) {alert(results);});
events_request.always(this.getEventsData);
}
};
})(jQuery);
EVENTS.Test.getEventsData();
Run Code Online (Sandbox Code Playgroud)
服务器端php如下
<?php
sleep(5);
echo "This is response";
?>
Run Code Online (Sandbox Code Playgroud)
我想要做的是从服务器获取数据,以防".done或.fail"完成,所以我使用".always"功能.但是只有两个请求发送到服务器,之后没有请求.我使用Firebug进行调试.但遗憾的是没有任何错误.我怎么知道为什么ajax在两个请求之后不工作.如何让它工作?
提前致谢.