class Rookout::ComWs::WebsocketConnection
Attributes
url[R]
Public Class Methods
new(url, proxy)
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 89 def initialize url, proxy @url = url @proxy = proxy @uri = URI.parse @url @secure = %w[https wss].include? @uri.scheme @socket = nil @proxy_connected = false end
Public Instance Methods
close()
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 139 def close return if @socket.nil? @socket.close @socket = nil end
connect(driver)
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 101 def connect driver @socket = tcp_connect proxy_connect driver if @proxy @socket = ssl_connect @socket if @secure end
proxy_connect(driver)
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 109 def proxy_connect driver connection_error = nil @proxy_connected = false proxy = driver.proxy @proxy proxy.on :connect do @proxy_connected = true end proxy.on :error do |error| connection_error = error end proxy.start proxy.parse read_char until @proxy_connected == true || !connection_error.nil? raise Exceptions::RookProxyException, connection_error unless connection_error.nil? end
read_char()
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 131 def read_char @socket.getc end
write(buffer)
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 135 def write buffer @socket << buffer end
Private Instance Methods
ssl_connect(tcp_socket)
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 158 def ssl_connect tcp_socket ctx = ::OpenSSL::SSL::SSLContext.new ctx.min_version = ::OpenSSL::SSL::TLS1_2_VERSION cert_store = ::OpenSSL::X509::Store.new cert_store.set_default_paths ctx.cert_store = cert_store ssl_socket = ::OpenSSL::SSL::SSLSocket.new tcp_socket, ctx ssl_socket.hostname = @uri.host ssl_socket.sync_close = true ssl_socket.connect ssl_socket end
tcp_connect()
click to toggle source
# File lib/rookout/com_ws/websocket_client.rb, line 148 def tcp_connect if @proxy uri = URI(@proxy) TCPSocket.new uri.host, uri.port else TCPSocket.new @uri.host, @uri.port || (@secure ? 443 : 80) end end