1
針對用戶特定事件實施長輪詢的最佳方式是什麼?我有一個「家庭飼料」爲每個用戶,我想立即動態更新新的信息,因爲它來。針對長期輪詢發出用戶特定事件
現在我正在從客戶端的AJAX調用/註冊?ID = 2,例如,傾聽更新。當發生與用戶(id = 2)相關的其他事件(eventid = 3)時,服務器本身發送GET請求以發送/發送?id = 2 & eventid = 3。 Node.js的服務器具有類似下面的代碼:
var event_emitter = new events.EventEmitter();
http.createServer(function(req,res) {
var uriParse = url.parse(req.url,true);
var pathname = uriParse.pathname;
if (pathname=="/register") {
var userid = uriParse.query.id;
var thisRes = res;
event_emitter.addListener('event'+userid,function(eventid){
if (thisRes) {
console.log(thisRes);
thisRes.writeHead(200, { "Content-Type": "text/plain" });
thisRes.end(eventid);
thisRes = null;
}
});
} else if (pathname=="/emit") {
var userid = uriParse.query.id;
var eventid = uriParse.query.eventid;
event_emitter.emit('event'+userid,eventid);
res.writeHead(200, { "Content-Type": "text/plain" });
res.end('success');
}
}).listen(3000,"0.0.0.0");
所以直到事件發生在客戶端的AJAX調用不加載,此時服務器返回與事件ID的響應。客戶端使用此eventid進行不同的AJAX調用(無關,因爲我使用Django作爲主應用程序,但Node.js用於事件驅動的超能力)。
我只是爲更多用戶連接創建「event2」,「event454」等衆多偵聽器而煩惱。這是否可以像Node.js一樣進行擴展?我怎麼能發出用戶特定的事件?
在此先感謝!