В двух словах: не нужно пытаться передавать io в качестве параметра.
Его можно сделать "глобальным" на уровне app следующим образом.
К примеру, после
var io = require('socket.io')(server);
написать
app.set('io', io);
после чего можно в любом обработчике получить его через
var io = req.app.get('io');