Przestrzenie nazw umożliwiają tworzenie obiektów o tej samej nazwie, ale byłyby one oddzielne, ponieważ będą znajdować się w różnych przestrzeniach nazw, zwanych inaczej zakresami.
To jest ten sam proces myślowy, który powinieneś mieć z przestrzeniami nazw Socket.IO. Jeśli budujesz modułową aplikację internetową Node, będziesz chciał określić przestrzeń nazw różnych modułów. Jeśli spojrzysz wstecz na nasz kod przestrzeni nazw, zobaczysz, że mogliśmy nasłuchiwać dokładnie tych samych zdarzeń w różnych przestrzeniach nazw. W Socket.IO zdarzenie connection w domyślnym połączeniu i zdarzenie połączenia w przestrzeni nazw / xxx są różne. Na przykład, jeśli masz czat i system komentarzy w swojej witrynie i chcesz, aby oba działały w czasie rzeczywistym, możesz dla nich przestrzeń nazw. Pozwala to na zbudowanie całej aplikacji Socket.IO, która żyje tylko w swoim własnym kontekście.
Byłoby to również prawdą, gdybyś tworzył coś do spakowania i zainstalowania. Nie możesz wiedzieć, czy ktoś już używa pewnych zdarzeń w domyślnej przestrzeni nazw, więc powinieneś utworzyć własne i tam słuchać. Dzięki temu nie nadepniesz na żaden programista, który korzysta z Twojego pakietu.
Przestrzenie nazw pozwalają nam podzielić połączenia na różne konteksty. Możemy to porównać do pokoi, które pozwalają nam grupować połączenia, a następnie możemy połączyć to samo połączenie również z innymi pokojami.
Przestrzenie nazw umożliwiają tworzenie różnych kontekstów, w których Socket.IO będzie działać. Pokoje umożliwiają grupowanie połączeń klientów w tych kontekstach.