Websocket and HTTP server where authenticated users can subscribe to changes.
./runexample.sh
It opens a websocket connection, accepting a first message in JSON format { "access_id" : "client1", "timestamp" : 200 }. If succeed, it will keep open a websocket connection to the client to keep it update on future events (in JSON format) and those that already happened since last_seen. At any moment the notifier can close the connection, in that case it could be becuase it is too busy (too many open connection) or because the user got dropped out. The events themselves are exactly the same json the client would get after the related Get/Post call (including block-querier).
wscat -c http://localhost:8080/subscribe_to_events connected (press CTRL+C to quit) { "access_id" : "client1", "timestamp" : 2000 }
It take a list of events (in JSON format in the request body) to be pushed and it will always return true. Notice that the notifier might actually ignore those events if there's no app-client subscribed interested on those, but this would be transparent to the connector, who will not care whether their notifications are broadcasted or ignored.
curl -H "Content-Type: application/json" -X POST -d '[{"accessid":"client1", "created_at": 10, "payload" : "client1 message"},{"accessid":"client2", "created_at": 20, "payload" : "client2 message"}]' localhost:8080/push_events
It force the connection to that user (in JSON format in the request body { "drop_access_id" : "client1" }) to be dropped. Notice that even if this call is not made, the notifier could nevertheless drop subscriptions if they get too many or they don't respond to the heartbeat.
curl -H "Content-Type: application/json" -X POST -d '{"drop_access_id":"client1"}' localhost:8080/drop_user
{ "accessid" : «access_id», "created_at" : «timestampt», "payload" : «what the client would receive, that should look the same as it would had get it from an http request» }