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.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/schematic/datastream/websocket_client.rb', line 43 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.
41 42 43 |
# File 'lib/schematic/datastream/websocket_client.rb', line 41 def connected @connected end |
#ready ⇒ Object (readonly)
Returns the value of attribute ready.
41 42 43 |
# File 'lib/schematic/datastream/websocket_client.rb', line 41 def ready @ready end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
41 42 43 |
# File 'lib/schematic/datastream/websocket_client.rb', line 41 def url @url end |
Instance Method Details
#close ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/schematic/datastream/websocket_client.rb', line 70 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
83 84 85 86 87 88 89 90 |
# File 'lib/schematic/datastream/websocket_client.rb', line 83 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
65 66 67 68 |
# File 'lib/schematic/datastream/websocket_client.rb', line 65 def start @should_reconnect = true Thread.new { connect } end |