What is the difference between a room id of !example391:server.com and #example:server.com for a user at server2.com? Is there also a way to assign an internal address starting with a #? Everytime I try to make it internal only, it becomes external at the same time. I also noticed that Element allows me to assign custom room addresses from different servers, how would that be possible?
The
#
is a room alias, only!
denotes a room ID.Room IDs are the main identifier for a room, while one or more aliases can also be assigned to it for discovery purposes.
Any server can assign aliases - and therefore also serve the room discovery, but only if the room admins allow them.
Using the Matrix HQ room as an example;
#matrix:matrix.org
is the canonical alias for the room, mapping to!OGEhHVWSdvArJzumhm:matrix.org
.If you want to join the room, you either need to know the ID and some information on which servers are currently part of the room, or you need to know a room alias - which can be used to query the server owning it in order to receive the information on the room and how to join it.
For example; (
%23
is the HTTP entity for #, since # would otherwise be handled as a client part of the URL)