Tag: 长轮询

推送iOS和Android Interval Poll方法的通知服务器后端

我正在为iOS和Android编写一个NodeJS推送通知服务器。 目前,一旦我获得设备令牌,我将它们保存在本地MongoDB数据库中,然后在发生更改时触发通知。 问题是,“更改”(信息添加)发生的数据库不是我自己的。 这是第三方的服务器。 所以我知道服务器的变化是通过使用第三方提供的API。 我目前的解决scheme是使用setTimeout每隔X分钟发出一个请求来检查更改,然后基于此发出通知。 缩短的时间间隔是10分钟,最长的时间是1小时。 我基于时间dynamic地改变时间间隔。 我的问题是(是), 1.) setTimeout方法是否是解决这个问题的最好方法? 如果不是我还能使用什么? 2.)有什么办法可以在这种情况下实现Web Sockets ? 3.)如果setTimeout是唯一的select,我应该遇到什么样的问题? 这是什么目前的function看起来像 function start_notifications_server_driver() { if(current_user_info.num_sent <= current_user_info.frequency){ //I removed the interval object on here because it's quite large and would take up space here for(var i = 0; i < intervals.length; i++){ if(check_if_time_between(intervals[i])){ if(dev_mode) console.log("Returned true for", intervals[i]); temp_interval […]

socket.io – polling-xhr.js:264 GET错误

我一直在我的本地主机上的聊天应用程序(这工作正常),但是当我试图承载它在Github或000webhost上 ,我得到这个错误polling-xhr.js:264在两个主机(两个主机有一个https连接)。 我正在使用cfenv来parsingCloud Foundry提供的环境variables。 以下是有关错误的图片: 它会继续这样下去… 这是看我的代码: server.js var cfenv = require('cfenv'); var appEnv = cfenv.getAppEnv(); var express = require('express'); var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(appEnv.port, appEnv.bind, function(){ console.log("Server starting on " + appEnv.url); }) app.use(express.static(__dirname + '/')); … // rest of socket.io code 的index.html … <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script> […]

request.close事件在node.js服务器中不会​​触发

我正在使用node.js作为服务器的长轮询应用程序。 具体的任务是立即学习,然后用户下线。 所以,我必须听取request.close事件,对吗? 我从如何检查连接是否在node.js服务器中被中止复制下面的一段代码 var http = require("http"), util = require("util"); var httpServer = http.createServer(function(req, res) { util.log("new request…"); // notify me when client connection is lost req.on("close", function(err) { util.log("request closed…"); }); // wait with response for 15 seconds setTimeout(function() { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write("response"); res.end(); util.log("response sent…"); }, 15000); }); httpServer.listen(8888, "127.0.0.1"); util.log("Running […]

socket.io服务器在注册客户端断开连接时出现延迟

我有一个socket.io连接使用xhr作为唯一的传输。 当我在浏览器中加载应用程序(以chrome和ff进行testing)时,套接字连接,一切正常,直到我离开页面。 如果我重新加载浏览器,我可以看到客户端发送'disconnect'事件,但服务器断开连接事件在很长一段时间内不会触发(假设客户端心跳超时)。 这是一个问题,因为我在客户端断开连接时在服务器上做了一些清理工作。 如果客户端重新加载,我会在断开连接之前获得多个连接事件。 我已经尝试在窗口的'beforeunload'事件中手动发送客户端的断开连接消息,但无济于事。 有任何想法吗? 我debugging了socket.io服务器,并且我可以确认Manager.prototype.onClientDisconnect只是因为“closures超时”原因而被触发。

长时间轮询从浏览器中获取超时

我试图使用node.js服务60秒的长轮询请求。 我面临的问题是,浏览器正在超时。 相同的设置工作30秒。 有人可以build议如何实现这一目标吗? 使用JQuery作为JS框架。 谢谢…

Node.js与Socket.io – 长轮询失败,并抛出“代码”:1,“消息”:“会话ID未知”响应

我坚持为什么被移动到IIS7服务器的nod​​e.js应用程序现在失败。 我知道IIS7不支持Web套接字,但我的理解是,如果Web套接字不可用,socket.io将回退到长轮询。 所以现在,当用户试图按下通常需要套接字或长轮询的特定button时,我会得到如下所示的内容: XHR finished loading: POST "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777964357-6&sid=QWsESi0c9ih7WMWKAAAC". GET https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC 400 (Bad Request) XHR finished loading: GET "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC". OPTIONS https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC XMLHttpRequest cannot load https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC. Invalid HTTP status code 400 当我单击GET或XMLHttpRequest时,我可以看到响应是"code":1,"message":"Session ID unknown" ,我不明白,因为我可以看到SID。 当我点击列出的失败选项的代码时,我发现问题来自Request.prototype.create,即xhr send: xhr.send(this.data); 有没有人有任何想法可能会导致这些事情? 任何澄清将不胜感激! 非常感谢!

开始使用“长轮询”

我想开始在我的网站上实施一些“长期投票”技巧。 基本上我需要一个主要的function,刷新HTML列表是否新的数据已被添加到数据库。 对于我的设置,我有一个带LAMP环境的入门级VPS服务器。 我知道PHP,JS和我熟悉Unix系统。 什么才是正确的技术来实现一些长期投票效果? 非常感谢任何input

socket.io强制断开XHR轮询

我有一个客户端/服务器应用程序使用服务器上的nodejs和socket.io作为连接机制。 由于与我的应用程序相关的原因,我希望每个浏览器只有一个活动连接,并拒绝来自其他选项卡的所有连接,这些连接可能在会话期间稍后打开。 这对于WebSockets非常有用,但是如果浏览器不支持WebSockets,而是使用XHR-polling,那么断开连接就不会发生,所以如果用户只是刷新页面,这不会被解释为重新连接(我有一个延迟重新连接和会话恢复),但作为一个新的选项卡,在连接被终止,因为这个相同的选项卡所做的旧连接仍然是活动的。 我正在寻找一种方法来有效地结束来自客户端的连接,每当发生刷新。 我尝试绑定到beforeunload并在客户端调用socket.disconnect() ,并发送一个像socket.emit('force-disconnect')并触发从服务器断开连接没有成功的消息。 我在这里错过了什么? 感谢你的帮助! 我读过这个问题 ,并没有find它对我的具体情况有用。

在node.js中进行长轮询 – 如果没有数据可用,如何“超时”挂起的请求?

我试图在Node.js中实现一个http长轮询服务器,并且不知道如何在超时达到时closures/closures挂起的请求。 我想到了三种可能的解决scheme: 将pendingRequest存储在一个散列/对象中,然后调用setIntervall,这样如果时间戳太旧,每隔1/2 / xs的pendingRequest就会被删除。 在套接字连接上设置超时 这两个解决scheme似乎都不是很合理,那么Node.js如何实现这样的function呢?

关于将nodejs与php应用程序集成的build议

我有一个现成的PHP应用程序(使用Kohana框架),我想长时间轮询。 从我读的一些东西看来,使用PHP进行长时间轮询并不可取,使用类似nodejs的东西是一个更好的select。 我的问题是什么是将nodejs(或其他适合长时间轮询的工具)与现有应用程序集成的最佳方式? 澄清我的应用程序基本上是一个浏览器插件,您可以用来发送数据给其他人的团体。 当数据发送时,我希望收件人,如果他们在线,也有浏览器插件,立即接收这些数据,并得到通知。