Class: Tempest::Jetstream::AsyncWebSocketTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/tempest/jetstream/client.rb

Overview

Default WebSocket transport using async-websocket. Loaded lazily so unit tests that inject a stub transport don’t pull in the Async runtime.

Instance Method Summary collapse

Constructor Details

#initializeAsyncWebSocketTransport

Returns a new instance of AsyncWebSocketTransport.



51
52
53
54
55
# File 'lib/tempest/jetstream/client.rb', line 51

def initialize
  require "async"
  require "async/http/endpoint"
  require "async/websocket/client"
end

Instance Method Details

#each_message(url) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'lib/tempest/jetstream/client.rb', line 57

def each_message(url)
  Async do |task|
    endpoint = Async::HTTP::Endpoint.parse(url)
    Async::WebSocket::Client.connect(endpoint) do |connection|
      while (message = connection.read)
        yield message.buffer
      end
    end
  end.wait
end