README.md in servent-0.0.1 vs README.md in servent-0.1.0

- old
+ new

@@ -1,8 +1,8 @@ # Servent -[<img src="https://travis-ci.com/mistersourcerer/servent.svg?token=aMwiRm3UQ11zdWwMxGgZ&branch=master" />](https://travis-ci.com/mistersourcerer/servent) +[<img src="https://travis-ci.org/mistersourcerer/servent.svg?branch=master" />](https://travis-ci.org/mistersourcerer/servent) Ruby _Server-Sent Events_ client. A _EventSource_ Ruby implementation based on the [W3C specification](https://www.w3.org/TR/eventsource). ## Early Development [15/11/2017] @@ -27,30 +27,79 @@ # # event: hello_world # id: 42 # data: Omg! Hello World. -events = Queue.new - event_source = Servent::EventSource.new("http://example.org/event-source") event_source.on_message do |message| - events.push message -end -event_source.start - -while (event = events.pop) puts "Event type: #{event.type}" - puts "Event body: #{event.body}" + puts "Event body: #{event.data}" # Will print: # # ``` # Event type: hello_world # Event body: Omg! Hello World. # ``` # And wait for the next event to arrive. end + +# join the internal event source thread +# so we can receive event until it terminates: +event_source.listen ``` + +## More examples + +There is directory `examples` in this project +with a _WEBrick_ server +and also a `EventSource` consumer. + +### How to run the example + +#### TL;DR + + # on one terminal: + $ rackup + + # on a second one: + $ ruby consumer.rb + + # on yeat another one + $ curl http://localhost:9292/broadcast + + # and to make the consumer close itself: + $ curl http://localhost:9292/enough + +#### More detailed version + +if you are inside the directory +(or copied the files in the example dir to your own) +you can run a _rackup_: + + $ rackup + +The server will run on port _9292_ +and it has 3 endpoints: + + / + /broadcast + /enough + +The root (`/`) is intended to consumers +and the one in the example +starts listening to that endpoint like this: + +```ruby +event_source = Servent::EventSource.new("http://localhost:9292/") +# ... +event_source.listen +``` + +If you want to test multiple messages arriving +you can use the `repeat` parameters in the request: + + $ curl http://localhost/broadcast?repeat=3 ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.