В server.js должен быть код, который запустит сокет на порт, и будет слушать соединение, браузер соединяется и пишет в сокет, мол бла-бла, мне нужен такой-то файл, это приходит в server.js и тот что-то делает в ответ на это.
В ноде нет своего сервера, там просто обвязка вокруг программы на c++ и это касается большинства встроенных в нее модулей, через js ты грубо говоря общаешься с ними - посылаешь команды и получаешь ответы.
Разжеванный ответ найдешь если погуглишь на тему tcp протокола и протокола http.