In order for the client side to be able to participate in the session created by connecting to a host, it must ask the host for data. This is done by subscribing to data of interest. Only clients are allowed to subscribe to data, and hosts are only allowed to send data to a client that has been explicitly requested in the form of a subscription.
When a client first subscribes to some piece of data, such as a polygon mesh, the host must send the current state of that data to the client. Then, whenever the data changes, it must send those changes to the client for as long as the client remains a subscriber. From the client's point of view, there is no difference in handling initial data being sent, and handling changes later on: they are all delivered in the same way which makes it easy to deal data in this fashion.
All data made available by a Verse host can be accessed through subscription in one way or another, and being a subscriber is generally required before data can be read or written easily. This is because being a subcriber ensures that the client has full access to whatever addressing information is used for the data in question.
![]() | It is not the intent of the subscription system to serve as a security device, to limit access to data to those clients that are subscribed. For instance, it is perfectly legal to create a new geometry node, and then immediately send vertex and polygon data to the known layers 0 and 1. Because these layers are known to exist in all geometry nodes, it is not even necessary to subscribe to the node, much less the layers. The main purpose of the subscription-oriented data access architecture is to limit the bandwidth used by a client, by permitting a client to tell a host which data it is interested in, and thus which data it needs to download and receive updates to. |
There is no data that cannot be changed at any time during a session, which helps make the system very dynamic. Being prepared for this and designing data structures accordingly is a great skill to have when writing Verse applications.