Articles of 服务器发送的事件

html5的岩石节点js服务器发送事件SSE示例不起作用

链接到文章: http : //www.html5rocks.com/en/tutorials/eventsource/basics/ 在这个例子中,node.js SSE服务器不工作。 我最终打开了/events连接,但浏览器没有收到任何响应。 SSE-server.js var http = require('http'); var sys = require('sys'); var fs = require('fs'); http.createServer(function(req, res) { //debugHeaders(req); if (req.headers.accept && req.headers.accept == 'text/event-stream') { if (req.url == '/events') { sendSSE(req, res); } else { res.writeHead(404); res.end(); } } else { res.writeHead(200, {'Content-Type': 'text/html'}); res.write(fs.readFileSync(__dirname + '/sse-node.html')); res.end(); } […]

内存泄漏Express.js与EventSource

当我连接x个EventSource客户端时,我想我正在运行一个Express应用程序的内存泄漏。 连接客户端并发送消息并断开连接之后,我的Express应用程序仅释放less量分配的Heap / RSS。 为了证实这一点,我在启动服务器时保存了Heapdump ,在连接7,000个客户端之后保存了Heapdump ,并向每个客户端发送了x个消息。 我等了一段时间,让GC有机会清理堆栈快照。 为了比较这些堆快照,我在Chrome Developer Tools Profile视图中加载了这些快照,并select了“比较”模式。 我的问题是: 1)如何解释这些数字? (有关参考请参阅附加的堆快照截图。) 2)例如,它看起来像是Socket对象几乎不释放任何对象,是正确的吗? 3)你能给我更多的技巧来调查这个问题吗?

Node.JS上的服务器发送的事件

我实际上正在尝试创build一个将使用Server-Sent Events草案的Web应用程序。 据我所知,SSE每个连接使用一个线程,并且由于服务器将持续向客户端泵送数据,即使是一秒钟也不会闲置,所以我无法将线程恢复到池中。 因此,我试图使用Node.JS(我没有使用,直到date)处理连接到服务器。 我已经通过了SSE的HTML5 Rocks简介,并且有一个将SSE与Node.JS集成的代码示例。 然而,我很困惑,Node.JS是否会同时处理数千个客户端连接,并比Apache服务器更有效地利用服务器 ? 任何人都可以帮助我理解Node究竟是如何行事的? 对不起,如果我听起来有点太模糊。 我准备尽可能多的澄清! 谢谢!

JavaScript EventSource SSE不在浏览器中触发

我一直在开发nodejs服务器,为我在HTML5中开发的新网站提供服务器端事件。 当我远程login到服务器时,它工作正常,向我发送所需的HTTP响应头,然后是一个事件stream,我现在每隔2或3秒就会生成一个事件stream,以certificate它是有效的。 我已经尝试过最新版本的FireFox,Chrome和Opera,他们创build了EventSource对象并连接到nodejs服务器,但没有一个浏览器生成任何事件,包括onopen,onmessage和onerror。 但是,如果我停止我的nodejs服务器,终止从浏览器的连接,他们都突然调度所有的消息,我所有的事件都显示出来。 浏览器然后按照规范尝试重新连接到服务器。 我在networking服务器上托pipe所有东西。 没有在本地文件中运行。 我已经阅读了所有我可以在网上find的东西,包括我已经购买的书籍,没有任何信息表明有这样的问题 有什么我失踪? 一个示例服务器实现 var http = require('http'); var requests = []; var server = http.Server(function(req, res) { var clientIP = req.socket.remoteAddress; var clientPort = req.socket.remotePort; res.on('close', function() { console.log("client " + clientIP + ":" + clientPort + " died"); for(var i=requests.length -1; i>=0; i–) { if ((requests[i].ip == […]