Проблема с кодом Node.js - PullRequest
2 голосов
/ 21 июля 2011

Я новичок в 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 ( "добро пожаловать");Но я получаю сообщение console.log () под ним в терминале

  2. Событие присоединенного пользователя, которое я отправил, не перехвачено.но после закрытия сервера все происходит сразу.Я получаю приветственное сообщение в браузере и ответный вызов для присоединенного события.

Может кто-нибудь сказать мне, что здесь происходит не так?Спасибо

1 Ответ

2 голосов
/ 21 июля 2011

хорошо, есть несколько проблем:

  1. вам нужно объявить пользователя e.on, который вы присоединились, прежде чем его вызвать
  2. вам нужен res.end () в e.on, присоединенном к пользователю.

Вот исправленный код:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...