Yes, there is this functionality in PI Web API. It is called PI Web API Channels. This feature is accessed through the Web Socket protocol. It is developed on top of AFDataPipe, which is a class from the PI AF SDK.
AFDataPipe and PI Web API Channels signs up to be notified of data change events (values) for a selected set of attributes. This also includes out-of-order events. If you want to get compressed values using PI Web API, you should use the PI Web API GetRecorded method instead.
AFDataPipe and PI Web API Channels should get data from the PI System. Buffer is used normally with interfaces when they send data to the PI System. You cannot use buffer when you are receiving data from PI.
If you want the change the list of attributes that you are monitoring, I think you need to destroy you websocket object and create a new one. But you can add and remove attributes/PI Point run time using PI AF SDK.
Note that PI Web API Channels is still in CTP, so I wouldn't use this component on big projects before it is released.
Please let me know if this helps you!