Articles of 长轮询

PHP – 长时间轮询通知(PHP标志或其他方式?)

我很快就开始一个新的项目,而且即时考虑长时间轮询通知用户,他们有一个新的私人信息/通知,他们必须检查,真的类似于Facebook用来通知你,有人发布了一些关于你/喜欢你的照片 从我看过的文字来看,cometd似乎是一个很好的select。 然后,其他方式开始出现,如:Socket.io,和node.js .. 现在,我的问题是, 你认为哪一个是这种情况的最佳select,为什么? 我需要做的是以下几点: 用户1login到他们的帐户 用户2向用户1发送存储在数据库中的消息,并生成一个标志(如果可能的话?!) 负责用户1的PHP脚本应该拿起标志,并将通知推送给用户1 我知道如何照顾JavaScript方面,但我从来没有做过类似于长轮询的任何事情。 我使用jQuery作为JavaScript库和PHP的服务器端。 那么build议和任何好的资源来做到这一点?

如何在redis中保持HTTP响应

我正在nodeJS上创build一个长轮询聊天应用程序,而不使用Socket.io并使用集群进行扩展。 我必须find一种方法来存储所有长轮询的HTTP请求和响应对象,使其可以跨所有节点群集使用(这样,当收到一个长轮询请求的消息时,我可以得到这个请求并回应) 我已经尝试使用redis,但是,当我对http请求和响应对象进行string化时,我得到“无法使string循环结构”错误。 也许我正在以一种错误的方式接近它。 在这种情况下,我们通常如何在不同的集群上实施lon-polling?

Adobe flex作为客户端与node.js

我想使用Adobe Flex来创build一个客户端和node.js来build立一个长时间轮询的服务器。 我正在尝试在Flex中开发一个聊天应用程序。 任何人都可以build议我怎么做到这一点?

Node.js重复监听器问题

我是node.js的新手,很难掌握事件监听器/发射器的dynamic。 我正在尝试为典型的“新闻源”应用设置一个简单的长轮询监听器。 我可以使用下面的代码注册和发送事件给听众。 我的问题是,每发生一个事件,它被推送到客户端多个(两个或更多!)次。 var http = require('http'), events = require('events'), url = require('url'); var event_emitter = new events.EventEmitter(); http.createServer(function(req,res) { var uriParse = url.parse(req.url,true); var pathname = uriParse.pathname; console.log(req.url); if (pathname=="//register") { var thisRes = res; event_emitter.addListener('event',function(actionid){ if (thisRes) { thisRes.writeHead(200, { "Content-Type": "text/plain" }); thisRes.end(actionid); thisRes = null; } }); } else if […]

Node.js:这个长轮询实现是否泄漏:

我正在评估Node.js,以便在Java Web App上replace当前的推送function。 我写了一个简单的长轮询服务器,就像客户端和Java后端之间的中介一样工作。 客户端发出请求订阅,然后Java服务器可以通过调用Node.js来通知订阅的客户端。 目前为止似乎工作正常,但我得到了以下消息指出内存泄漏: (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace at EventEmitter.addListener (events.js:168:15) at EventEmitter.once (events.js:189:8) at route (C:\Users\Juan Pablo\pushserver.js:42:12) at Server.onRequest (C:\Users\Juan Pablo\pushserver.js:32:3) at Server.EventEmitter.emit (events.js:91:17) at HTTPParser.parser.onIncoming (http.js:1793:12) at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23 ) at Socket.socket.ondata (http.js:1690:22) at TCP.onread (net.js:402:27) 我有一行代码logging现有的侦听器,每当一个通知事件发射。 […]

用RESTful体系结构进行长轮询(用户通知)

我正在做一个简单的RESTful api(在NodeJs上)。 我明白,宁静意味着水平缩放将会更容易。 不幸的是,我需要某种方式让客户几乎立即得到某些事件的通知。 为此,我正在考虑做长期投票。 我有这个问题是如何与多个服务器的工作。 例如,这是一个简化的用例: Both servers A and B are behind a common load balancer. User Alice posts a message on Bob's wall (PUT request on server A). If Bob is online, he should be notified instantly (long-polling on server B). 服务器A如何向Bob发送通知,或者服务器B知道应该通知Bob?

跨浏览器COMET实现node.js

我是一个node.js启动器。 我想要交付的产品看起来像是一次有1000多名参与者在线聊天。 我正在寻找一个跨浏览器演示(IE7,Android支持)开始。 我担心的是客户端跨浏览器部分。 我梦想一个使用web套接字的支持浏览器和iframe的库不被支持,经过很好的testing,并且封装了COMET的实现。 我在网上find了一些解决scheme,但是我对你的build议很生气。 谢谢

iframe中的彗星服务器数据是否正在积累?

我使用分块数据将[dos] something()[/ script]标签推入到我的慧星服务器的iframe中,但是脚本标签只能持续积累。 如何在每个脚本标签之后擦除它?

nodejs推送订阅redis的通知

对于login用户只,我想以某种方式通知他们,如果他们有任何例如新的通知。 例如,假如一个成员给他们发送了一条私人消息,我想告诉用户他们有一条新消息要查看(假设他们没有刷新页面)。 使用Nodejs和Redis,我将如何去做这件事? 注意:我只需要nodejs发送一个小的json给用户说他们有一个新的消息。 工作stream程如下,我在想: 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 […]

NodeJS CouchDB长轮询崩溃

当然,我有一个通过NodeJS上的ExpressJS发布的web应用程序。 它使用CouchDB作为数据源。 我实现了长轮询以保持应用程序在所有用户之间始终保持同步。 要做到这一点,我使用以下逻辑: 用户login到应用程序,并通过Express路线向Node发起初始的长轮询请求。 节点轮stream向CouchDB发出长轮询请求。 当Couch更新时,它响应来自Node的请求。 最后Node响应浏览器。 简单。 但是,发生的事情是,当我刷新浏览器时, 每五次刷新就会冻结一次 。 咦? 非常奇怪。 但是,即使在我的testing环境中,我也可以一遍又一遍地重现它。 每五次刷新一次,冻结Node并导致应用程序冻结。 重启节点解决了这个问题。 拉了很多头发后,我想通过改变这个问题来解决它: app.get('/_changes/:since*', security, routes.changes); 对此: app.get('/_changes/:since*', security, function () { routes.changes }); 然而,经过进一步的testing,这只是没有运行routes.changes。 所以没有实际解决scheme 任何想法为什么长期投票CouchDb从Node会做这样一个奇怪的事情? 在第五次刷新,我可以在我的路由代码的第一行节点中有一个断点,它永远不会被击中。 但是,在浏览器中,我可以断开对长时间轮询的节点的请求,并且它似乎熄灭。 这就像Node由于某种原因不接受连接 我应该以不同的方式接近从Node到CouchDB的长轮询吗? 我正在使用feed = longpoll,我应该做feed还是连续的? 如果我将couchdb中的changes_timeout调低到5秒,它就不能解决问题,但是它可以更容易地处理,因为冻结只会持续5秒钟。 所以这似乎表明节点不能处理有几个待处理的请求。 也许我会尝试一个连续的饲料,看看会发生什么。 self.getChanges = function(since){ 浏览器: $.ajax({ url: "/_changes/" + since, type: "GET", dataType: "json", […]