Class: Rexec::TerminalService
- Inherits:
-
Object
- Object
- Rexec::TerminalService
- Defined in:
- lib/rexec/terminal.rb
Overview
Service for terminal WebSocket connections.
Instance Method Summary collapse
-
#connect(container_id, cols: 80, rows: 24) ⇒ Terminal
Connect to a container's terminal.
-
#initialize(client) ⇒ TerminalService
constructor
A new instance of TerminalService.
Constructor Details
#initialize(client) ⇒ TerminalService
Returns a new instance of TerminalService.
91 92 93 |
# File 'lib/rexec/terminal.rb', line 91 def initialize(client) @client = client end |
Instance Method Details
#connect(container_id, cols: 80, rows: 24) ⇒ Terminal
Connect to a container's terminal.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/rexec/terminal.rb', line 106 def connect(container_id, cols: 80, rows: 24) begin require "websocket-client-simple" rescue LoadError raise LoadError, "websocket-client-simple is required for terminal connections (gem install websocket-client-simple)" end ws_url = @client.ws_url("/ws/terminal/#{container_id}") ws = WebSocket::Client::Simple.connect(ws_url, headers: { "Authorization" => "Bearer #{@client.token}" }) terminal = Terminal.new(ws) # Wait for connection sleep 0.1 until ws.open? # Set initial size terminal.resize(cols, rows) terminal end |