We can now discuss the fact that namespaces and rooms are not mutually exclusive. You can use them at the same time. Now that we have discussed how they work, this will make sense. Namespaces allow you to create different contexts for Socket.IO to work in. Rooms allow you to group client connections inside of those contexts.
Namespaces are farther up in the hierarchy so that you can use them together if they come first. As an example, let's say that we built our Ping-Pong app with a namespace of
pingpong with two rooms,
'' (empty string) and
'vip'. A lot of code can stay exactly the same because the socket object inside of a connection event is already tied to the namespace. If you were outside of the namespace, ...