Skip to content

y2k2mt/sse.cr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Server-Sent Events

Build Status Releases

Server-Sent Events server/client for Crystal.

Installation

  1. Add the dependency to your shard.yml:
dependencies:
  sse:
    github: y2k2mt/sse.cr
  1. Run shards install

Usage

Client

require "sse"

sse = HTTP::ServerSentEvents::EventSource.new("https://127.0.0.1:8080")

sse.on_message do |message|
  # Receiving messages from server
  p message.data
end

sse.run

Server

require "sse"

server = HTTP::Server.new [
  HTTP::ServerSentEvents::Handler.new { |es, _|
    es.source {
      # Delivering event data every 1 second.
      sleep 1
      HTTP::ServerSentEvents::EventMessage.new(
        data: ["foo", "bar"],
      )
    }
  },
]

server.bind_tcp "127.0.0.1", 8080
server.listen

Running server and you can get then:

$ curl 127.0.0.1:8080 -H "Accept: text/event-stream"

data: foo
data: bar

data: foo
data: bar

...

Contributing

  1. Fork it (https://github.com/y2k2mt/sse.cr/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • y2k2mt - creator and maintainer