I have a Node.js web server that runs a socket server on top, which was created using Socket.io. Basically, this works.
What I now want to achieve is that the clients that connect are clustered in groups. So there might be some clients which make up group A and some other clients which make up group B. They shall select to which group they belong by adressing a specific URL, either localhost:3000/A
or localhost:3000/B
.
In Socket.io I now want to send messages to all clients in group A or to all clients in group B or to all clients, without looking at their group.
It's basically like having a chat with rooms, and you have either messages for all clients within a specific room, or for any client, no matter what room he is in.
What is the best way to design such a system using Socket.io?
I have been trying using namespace so far, which basically works for creating groups A and B, but then I lose the ability to send messages to all clients, no matter what room they are in. At least I don't know how to do this.
How should I model this? What are the right terms I should look for?
UPDATE: According to the answer of @sdedelbrock I could use namespace or rooms:
- If use namespaces, I am not long able to send to everybody, regardless of their namespace. This is because
io.sockets
is a shortcut toio.of('')
, which of course does not match the namespace any longer. - This means that I should use rooms, but I wonder what the semantic difference between a room and a namespace is.
To cut it short: Why are there two concepts for the same (?) idea?
io.sockets
is a shortcut toio.of('')
, which of course does not match the namespace any longer. So this means that I should use rooms. Anyway, I wonder what the semantic difference between a room and a namespace is? Why are there two concepts for the same (?) idea? – Jeffersonjeffery