Leaving and Joining
RoomClient starts it is automatically a member of an empty, unidentified, room.
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:
OnPeerRemovedfor any peers that go out of scope
OnPeerAddedfor any peers that come into scope
OnPeerUpdatedfor any peers that are in scope but whose properties have changed
OnJoinedRoomwith the new room
OnRoomUpdatedwith 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.