Class: Schematic::DataStream::WebSocketClient
- Inherits:
-
Object
- Object
- Schematic::DataStream::WebSocketClient
- Defined in:
- lib/schematic/datastream/websocket_client.rb
Instance Attribute Summary collapse
-
#connected ⇒ Object
readonly
Returns the value of attribute connected.
-
#ready ⇒ Object
readonly
Returns the value of attribute ready.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(base_url:, api_key:, logger:, message_handler:, ready_handler: nil) ⇒ WebSocketClient
constructor
A new instance of WebSocketClient.
- #send_message(data) ⇒ Object
- #start ⇒ Object
Constructor Details
#initialize(base_url:, api_key:, logger:, message_handler:, ready_handler: nil) ⇒ WebSocketClient
Returns a new instance of WebSocketClient.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/schematic/datastream/websocket_client.rb', line 33 def initialize(base_url:, api_key:, logger:, message_handler:, ready_handler: nil) @base_url = base_url @api_key = api_key @logger = logger @message_handler = @ready_handler = ready_handler @connected = false @ready = false @should_reconnect = true @reconnect_attempts = 0 @mutex = Mutex.new @write_mutex = Mutex.new @connect_mutex = Mutex.new @connecting = false @socket = nil @read_thread = nil @ping_thread = nil @stopped = false @url = build_ws_url(base_url) @last_pong = Process.clock_gettime(Process::CLOCK_MONOTONIC) end |
Instance Attribute Details
#connected ⇒ Object (readonly)
Returns the value of attribute connected.
31 32 33 |
# File 'lib/schematic/datastream/websocket_client.rb', line 31 def connected @connected end |
#ready ⇒ Object (readonly)
Returns the value of attribute ready.
31 32 33 |
# File 'lib/schematic/datastream/websocket_client.rb', line 31 def ready @ready end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
31 32 33 |
# File 'lib/schematic/datastream/websocket_client.rb', line 31 def url @url end |
Instance Method Details
#close ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/schematic/datastream/websocket_client.rb', line 60 def close @mutex.synchronize do @should_reconnect = false @stopped = true @connected = false @ready = false end close_socket @ping_thread&.join(5) @read_thread&.join(5) end |
#send_message(data) ⇒ Object
73 74 75 76 77 78 79 80 |
# File 'lib/schematic/datastream/websocket_client.rb', line 73 def (data) return unless @connected msg = JSON.generate(data) write_frame(:text, msg) rescue StandardError => e @logger.error("WebSocket send error: #{e.}") end |
#start ⇒ Object
55 56 57 58 |
# File 'lib/schematic/datastream/websocket_client.rb', line 55 def start @should_reconnect = true Thread.new { connect } end |