下面的代碼node.js的真正奇怪的行爲:使用連接形式,socket.io並表達
req.form.on('progress', function(bytesReceived, bytesExpected){
var percent = (bytesReceived/bytesExpected * 100) | 0;
// progressEvent.download(percent);
io.sockets.on('connection', function (socket) {
socket.emit('progress', { percent: percent});
client = socket;
});
});
寫在一個HTTP POST處理器(express.js)發送套接字消息給客戶端的js,但它顯然創造了大量的聽衆,實際上它警告我說: 「節點)警告:可能的EventEmitter內存泄漏檢測,添加了11個偵聽器,使用emitter.setMaxListeners()來增加限制。
,從另一方面驗證碼:
io.sockets.on('connection', function (socket) {
progressEvent.on('progress', function(percentage) {
console.log(percentage);
socket.emit('progress', { percent: percentage});
});
});
不發送任何消息返回到客戶端,ProgressEvent是:
var util = require('util'),
events = require('events');
function ProgressEvent() {
if(false === (this instanceof ProgressEvent)) {
return new ProgressEvent();
}
events.EventEmitter.call(this);
}
util.inherits(ProgressEvent,events.EventEmitter) ;
ProgressEvent.prototype.download = function(percentage) {
var self = this;
self.emit('progress', percentage);
}
exports.ProgressEvent = ProgressEvent;
我一直對這個奇怪的問題很好,我真的不明白爲什麼socket.io不會發送套接字消息到客戶端。
整個項目是在這裏:https://github.com/aterreno/superuploader
感謝您的關注&幫助
感謝您的回覆,我嚴格遵循您提供的鏈接上的代碼,並使用普通的server.send>客戶端發送回服務器一切正常,但不是在郵件處理程序。 代碼現在在這裏:https://github.com/aterreno/socket-node-sessions 特別是在這個文件中:https://raw.github.com/aterreno/socket-node-sessions/master/ app.js 你認爲我應該有一個iframe來處理套接字通信嗎? 似乎只是錯... 再次感謝。 – 2011-12-19 14:46:13