2014-01-21 92 views
2

我有一個小問題。我想運行一個Web服務器,並允許它使用socket.io與服務器進行通信,但我得到:Socket.io錯誤:聽EADDRINUSE

enter image description here

之後的更新

聊天類:

/** 
* 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

解決!謝啦!!!你是對的!! –