我是node.js的新手。我在嘗試的代碼中遇到了一些問題。在代碼看看:Node.js代碼問題
var http =require('http');
var url = require('url');
var events=require('events');
var e=new events.EventEmitter();
var i=0;
var clientlist=new Array();
function user(nam,channel) {
this.nam = nam;
this.chan=channel;
}
server = http.createServer(function(req,res) {
res.writeHead(200,{'Content-Type':'text/html'});
res.write('welcome');
var pathname = url.parse(req.url).pathname;
pathname=pathname.substring(1);
pathnames=pathname.split("&");
var c=new user(pathnames[0],pathnames[1]);
clientlist[i++]=c;
console.log("user "+pathnames[0]+" joined channel "+pathnames[1]);
e.emit('userjoined',clientlist[i-1].nam,clientlist[i-1].chan);
e.on('userjoined',function(n,c) {
res.write("new user joined with name: "+n+" and he joined channel "+c+"\n");
});
});
server.listen(2000);
我遇到的問題是:
我沒有得到在瀏覽器這行代碼一個值得歡迎的消息:res.write(「歡迎」) ;但是,我得到終端下方的console.log()消息
我發出的userjoined事件沒有被捕獲。但是,在關閉服務器之後,所有事情都立即發生。我在瀏覽器中收到歡迎消息,並收到userjoined事件的回調。
有人能告訴我這裏怎麼了?由於
你叫respond.end,我失蹤了嗎?您必須告訴它將流寫入瀏覽器,而不是緩衝它。 – jcolebrand
我不想調用將關閉連接的response.end()bcoz。我希望它保持活力。反正,問題似乎與node0.5.0版本。相同的代碼在node0.4.9版本中起作用:/ – CuriousCoder
您是否嘗試使用套接字?您仍然必須通知服務器每隔一段時間向客戶端發送一次信息。至少是沖水。 – jcolebrand