2014-01-21 2 views
2

작은 문제가 있습니다. 나는 웹 서버를 실행하고 socket.io를 사용하여 서버와 통신 할 수 있도록하려면하지만 난 얻을 :Socket.io 오류 : 수신 EADDRINUSE

enter image description here

POST의 UPDATE에게

채팅 등급 :

/** 
* Chat Class 
*/ 

// module dependencies 
var io = require('socket.io'); 
// self instance 
var self = this; 

/** 
* Constructor 
* 
* @param {server} 
* @param {userlist} 
*/ 
var Chat = function(server) { 
    this.server = server; 
}; 

// Init 
Chat.prototype.init = function() { 
    // socket instance 
    self.sock = io.listen(self.server); 
}; 

module.exports = Chat; 

주 :

내가 채팅 클래스 캡슐화없이하려고하면
// socket http server 
var server = http.createServer(app).listen(app.get('port'), function(){ 
    // chat server init 
    console.log('Listening on port ' + app.get('port')); 
}); 

// chat 
var chat = new Chat(server, userlist); 
chat.init(); 

, 그것은 작동 : 그래서, 내가 나쁜 뭐하는거야

// socket http server 
var server = http.createServer(app).listen(app.get('port'), function(){ 
    // chat server init 
    console.log('Listening on port ' + app.get('port')); 
}); 

var io = require('socket.io'); 

io.listen(self.server); 

?

미리 감사드립니다.

+0

이 http://stackoverflow.com/questions/9898372/nodejs-error-listen-eaddrinuse의 중복 - 일이 아마 이미 TCP/3000에서 실행되고 있습니다. – admdrew

+0

@admdrew, 답장을 보내 주셔서 감사합니다.하지만 이미 그 글을보고 있었고 제 경우는 아닙니다. –

+0

당신은 200 % 긍정적입니까? 'netstat'이 당신에게 말하는 것은 무엇입니까? – admdrew

답변

1

개체 인스턴스에 문제가 있습니다. 삭제 var self = this;

바꾸기; 으로

self.sock = io.listen(self.server); 

:

this.sock = io.listen(this.server); 
+0

해결되었습니다! 고마워요 !!! 당신 말이 맞아요 !! –