Leaving and Joining
When a RoomClient
starts it is automatically a member of an empty, unidentified, room.
A RoomClient
can create a new room or join an existing one at any time. Joining or leaving a room involes a room change. Changing the room is the same whether the client is going to or from an empty room, or between non-empty rooms.
When the room changes RoomClient
will emit a number of events, in order:
OnPeerRemoved
for any peers that go out of scopeOnPeerAdded
for any peers that come into scopeOnPeerUpdated
for any peers that are in scope but whose properties have changedOnJoinedRoom
with the new roomOnRoomUpdated
with the new room
Whether a Peer is in scope means whether or not it is available to current Peer. If two Peers moved to another room at the same time, they would remain in scope because the Peers themselves remain in the same rooms, even though that room has changed. On the other hand, if a Peer joins a different Room, it will go out of scope, as it is no longer in the same room, even though it may still be connected to the server.
The purpose of rooms is to facilitate message exchanging between specific sets of peers. Most Components should use the Peer events to create, destroy and update objects. The Room events are typically used when code needs to control room membership, for example the UI panels for joining rooms.
There is no such thing as leaving a room; underneath, leaving a Room means joining a new, empty Room.