Class: Terminalwire::Transport::WebSocket

Inherits:
Base
  • Object
show all
Includes:
Logging
Defined in:
lib/terminalwire/transport.rb

Constant Summary

Constants included from Logging

Logging::DEVICE

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logging

#logger

Constructor Details

#initialize(websocket) ⇒ WebSocket

Returns a new instance of WebSocket.



43
44
45
46
# File 'lib/terminalwire/transport.rb', line 43

def initialize(websocket)
  logger.debug "Transport::WebSocket(#{object_id}): Initializing"
  @websocket = websocket
end

Class Method Details

.connect(url) ⇒ Object



31
32
33
34
35
36
# File 'lib/terminalwire/transport.rb', line 31

def self.connect(url)
  uri = URI(url)
  endpoint = Async::HTTP::Endpoint.parse(uri)
  adapter = Async::WebSocket::Client.connect(endpoint)
  new(adapter)
end

.listen(url) ⇒ Object

Raises:

  • (NotImplementedError)


38
39
40
41
# File 'lib/terminalwire/transport.rb', line 38

def self.listen(url)
  # This would need to be implemented with a WebSocket server library
  raise NotImplementedError, "WebSocket server not implemented"
end

Instance Method Details

#closeObject



58
59
60
61
# File 'lib/terminalwire/transport.rb', line 58

def close
  logger.debug "Transport::WebSocket(#{object_id}): Closing"
  @websocket.close
end

#readObject



48
49
50
51
# File 'lib/terminalwire/transport.rb', line 48

def read
  logger.debug "Transport::WebSocket(#{object_id}): Reading"
  @websocket.read&.buffer
end

#write(data) ⇒ Object



53
54
55
56
# File 'lib/terminalwire/transport.rb', line 53

def write(data)
  logger.debug "Transport::WebSocket(#{object_id}): Writing"
  @websocket.write(data)
end