Такой чат пишется, используется tcp-сервер, который является, одновременно, и сервером, и клиентом, рассылая всем участникам комнаты то, что написал каждый другой участник. Примерная схема выполнения(наглядно) :
var socketRoom = [];
newClient on connect -> push to socketRoom
newClient on type -> write result forEach client in socketRoom except your socket
newClient on disconnect -> socketRoom.splice(yourSocket)