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); 

我遇到的问题是:

  1. 在这行代码中,我没有在浏览器中得到欢迎消息:res.write(“welcome”); 但是,我得到terminal下面的console.log()消息

  2. 我发出的用户join的事件没有被捕获。 但是,我closures服务器后,一切都发生了。 我在浏览器中获得欢迎消息,并获得userjoined事件的callback。

有人能告诉我这里怎么了? 谢谢

好的有几个问题:

  1. 您需要在调用之前声明e.on用户
  2. 您需要在e.on userjoined中使用res.end()。

这是修正的代码:

 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; } e.on('userjoined',function(res,n,c) { console.log("iuser "+pathnames[0]+" joined channel "+pathnames[1]); res.write("new user joined with name: "+n+" and he joined channel "+c+"\n"); res.end(); }); 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',res,clientlist[i-1].nam,clientlist[i-1].chan); }); server.listen(2000);