服务器在Cloud代码中发送事件

我试图在Cloud Code中实现一个简单的SSE。

这是我的Express路线来打开连接:

app.get('/call', function(req, res) { // let request last as long as possible req.socket.setTimeout(30000); //send headers for event-stream connection res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); res.write('\n'); // The 'close' event is fired when a user closes their browser window. req.on("close", function() { }); }); 

我也确保包括:

 var http = require('http'); 

问题是,我得到这个错误:

  I2014-06-28T19:09:50.500Z] TypeError: Object function () { throw Error('IncomingMessage.socket not supported'); } has no method 'setTimeout' at app.js:129:14 at callbacks (express_router.js:161:37) at param (express_router.js:135:11) at pass (express_router.js:142:5) at Router._dispatch (express_router.js:170:5) at Object.router (express_router.js:33:10) at next (connect_proto.js:240:15) at Object.handle (app.js:88:7) at next (connect_proto.js:240:15) at Object.parseExpressCookieSession [as handle] (parse-express-cookie-session.js:315:7) 

我也试过:

 req.setTimeout(30000); 

但是得到一个类似的错误。

我读了一些关于如何setTimeout不实现,直到更高版本的节点。 这可能是问题吗? 我无法findParse正在运行的节点的版本。

parsing云代码不支持setTimeout() 。 他们似乎没有在文件中的任何地方提到这一点,但是在旧论坛和其他问题上已经多次提及。

您可以尝试将PubNub.com与parse.com结合使用以获得实时体验。

我在Parse的Hector Ramos的Google小组讨论中find了答案:

在Cloud Code中, setTimeout()不可用,但是可以使用process.nextTick()代替。 你可以在Fosco的排队模块Parse-Resque中看到一个例子。