Каждый раз при коннекте создаётся новый прослушивальщик дисконнекта.
Как минимум его надо вытащить из on('connection').
На клиенте аналогично проверить чтобы не было никаких on() в других.
require('./controller/controller.js')(app,passport,io, req, res);
И конечно же подключение модуля при каждом запросе добавляет каждый раз прослушку событий.
Очень странный код, почему всё в кучу смешано и сокет сервер и обычный сервер.
Выносите сокет сервер отдельно. По роуту только верстку со скриптами отдавайте.