Как я могу создать клиентское соединение WSS в J Ruby framework?
Я использую гем faye / websocket-driver- ruby для подключения и публикации сообщения, может ли кто-нибудь предоставить информацию об этом.
Получение ошибки,
IOError: сброс подключения одноранговым sysread в org / jruby / ext / openssl / SSLSocket. java: 857,
Пожалуйста, дайте мне знать, что Я делаю неправильно.
require 'bundler/setup'
require 'eventmachine'
require 'websocket/driver'
require 'permessage_deflate'
require 'socket'
require 'uri'
require "openssl"
class WSSClient
DEFAULT_PORTS = { 'ws' => 80, 'wss' => 443 }
attr_reader :url, :thread
def initialize
@url = "wss://localhost:433/wss"
@uri = URI.parse(@url)
@port = @uri.port || DEFAULT_PORTS[@uri.scheme]
ssl_context = OpenSSL::SSL::SSLContext.new
ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
@socket = TCPSocket.new(@uri.host, @port)
ssl_context.ssl_version = :TLSv1_2_client
ssl_socket = OpenSSL::SSL::SSLSocket.new(@socket, ssl_context)
ssl_socket.sync_close = true
ssl_socket.connect
@driver = WebSocket::Driver.client(self)
@driver.add_extension(PermessageDeflate)
str = "Hello server!"
str = str + "\n"
@dead = false
@driver.on(:open) { |event| write str }
@driver.on(:message) { |event| p [:message, event.data] }
@driver.on(:close) { |event| finalize(event) }
@thread = Thread.new do
@driver.parse(ssl_socket.read(1)) until @dead
end
@driver.start
end
def send(message)
@driver.text(message)
end
def write(data)
ssl_socket.write(data)
end
def close
@driver.close
end
def finalize(event)
p [:close, event.code, event.reason]
@dead = true
@thread.kill
end
end
Или любой другой способ (алгоритм) для создания клиента WSS.