Для организации всех socket - при коннекте закидывайте его в "комнату" с его "userid". Таким образом сможете заэмитить для всех сокетов нашего пользователя нужное событие. Также по примеру того же passport - в middleware для socket - если пользователь авторизован - докиньте в socket user-а и он будет тебе доступен в следующих местах.
Вы когда ловите событие коннекта для пользователя - добавляйте его в "комнату" с его id. Таким образом даже если пользователь зашел с разных устройств - то его socket.id будет в одной и той же "комнате" и Вы сможете заэмитить событие всего лишь по id пользователя
Присоединяюсь к более обширному ответу Виталий. В Вашем случае Вы отправляете сообщение только конкретному сокету, а не всем зантересованным socket.emit('new message', html);
А следовало что то вроде io.in('some-room').emit('new message', html);
ну или вообще накройняк io.emit('new message', html);