class ManagerRemoteWebSockets
Public Class Methods
new()
click to toggle source
methods
Calls superclass method
ManagerRemoteSocketBase::new
# File lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb, line 17 def initialize super @class_client = @class_client || SocketClientWebSockets @class_client.manager_remote = self end
Public Instance Methods
start!(callback = nil)
click to toggle source
# File lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb, line 27 def start!(callback = nil) start_server_websocket(callback) start_server_websocket_secure(nil) nil end
Protected Instance Methods
server_type()
click to toggle source
properties
# File lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb, line 8 def server_type 'websocket' end
start_server_websocket(callback)
click to toggle source
# File lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb, line 35 def start_server_websocket(callback) @port = Constants::REMOTE_PORT_WEBSOCKET start_server(@port, nil, callback) nil end
start_server_websocket_secure(callback)
click to toggle source
# File lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb, line 43 def start_server_websocket_secure(callback) path_private_key = ENV['SERVER_PRIVATE_KEY'] path_certificate = ENV['SERVER_CERTIFICATE'] can_start_server = true if path_private_key.nil? can_start_server = false else can_start_server = can_start_server && File.exist?(path_private_key) end if path_certificate.nil? can_start_server = false else can_start_server = can_start_server && File.exist?(path_certificate) end if can_start_server tls_options = { private_key_file: path_private_key, cert_chain_file: path_certificate, } @logger.info 'try start secure websocket server' @port_secure = Constants::REMOTE_PORT_WEBSOCKET_SECURE start_server(@port_secure, tls_options, callback) else @port_secure = 0 end nil end
Private Instance Methods
start_server(port, tls_options = nil, callback = nil)
click to toggle source
# File lib/mrpin/core/remote/socket/websocket/manager_remote_web_sockets.rb, line 81 def start_server(port, tls_options = nil, callback = nil) host = '0.0.0.0' thread = Thread.new do begin EM.run do begin params = { host: host, port: port } unless tls_options.nil? params[:secure] = true params[:tls_options] = tls_options end EM::WebSocket.run(params) do |websocket| client = @class_client.new(websocket) client.websocket = websocket end @logger.info "server #{self.server_type}\tstarted on #{host}:#{port}" callback.call unless callback.nil? rescue Exception => e AppInfo.instance.on_server_error(e.to_s, e) end end rescue Exception => e message = "ATTENTION! error on web socket server #{host}:#{port} thread. Server is secure: #{!tls_options.nil?}. Error: #{e}" AppInfo.instance.on_server_error(message, e) retry end end thread.name = "thread_remote_server_#{host}:#{port}" nil end