2013-04-17 3 views
1

Я новичок node.js. Попытка создать простое приложение для чата, но проблема. При обновленной странице быстро 10+ раз у меня есть предупреждение:Node.js + Socket.io утечка памяти и максимальное прослушивание

(узел) предупреждение: возможно обнаружение утечки памяти EventEmitter. Добавлено 11 слушателей. Используйте emitter.setMaxListeners(), чтобы увеличить лимит.

Когда я отключил socket.io, это предупреждение исчезает. Итак, проблема с socket.io. Как увеличить максимальное количество прослушивателей для socket.io? Или, может быть, другое решение?

Код:

var http = require('http') 
fs = require('fs'); 

var server = http.createServer(function(req, response) { 
    req.setMaxListeners(0); 
    var pathname = __dirname + '/index.html' 

    fs.readFile(pathname, "binary", function(err, file) { 
     if (err) { 
      response.writeHead(500, {'Content-Type': 'text/plain'}); 
      response.end(err); 
     } else { 
      response.writeHead(200, {'Content-Type': 'text/html'}); 
      response.write(file, "binary"); 
      response.end(); 
     } 
    }); 
}); 

io = require('socket.io').listen(server); 
server.listen(4567); 
+0

Почему вы установите 'maxListener' в первую очередь? Возможно, GC замедляется. Также я не уверен, что socket.io в этом довольно неполном состоянии, вы его используете. – TheHippo

+0

Здесь я приведу лишь небольшой пример. Я собираюсь использовать websockets на клиенте и сервере. Но теперь я должен исправить проблему с памятью. – Flex

ответ

0

Я не могу воспроизвести эту проблему, но попробуйте это:

io.setMaxListeners(0); 
+0

Уже пробовал. Также попробовал io.sockets.setMaxListeners (0). Не решает проблему. – Flex

+0

Ну, это * - это просто предупреждение, поэтому вы можете просто игнорировать его :) – robertklep

+0

Да, но в то же время я вижу огромный рост использования памяти. До 60-80%, но без socket.io - всего 1-2%. – Flex