EDIT 2018:
Этот ответ является устаревшим.
Сервер Iodine был переписан как расширение C, и ни один клиент Websocket, ни уровень SSL/TLS не были реализованы в Ruby, пока (туннелирование SSL/TLS в настоящее время является рекомендуемым способом получения шифрования).
Вы можете использовать, вероятно, использовать Iodine's websocket client, если это простое соединение (вы можете добавить параметры запроса, куки и заголовки запроса, если вы нуждаетесь в них) ... Fair уведомление, я автор йодом драгоценный камень.
Это должно быть просто:
# load the Http extension which includes a websocket client and server
require 'iodine/http'
# As long as Iodine.protocol isn't a Class, Iodine will only perform tasks
Iodine.protocol = :timers
# We will use this as our 'on_open' callback.
on_open_proc = Proc.new do
puts 'Connection opened'
# `#write` is defined in the WebsocketClient
# This Proc runs within the instance's context.
# It's like defining a method in a subclass.
write 'Hello World!'
end
# We will use this as our 'on_message(data)' callback.
on_message_proc = Proc.new {|data| puts data }
# We will use this as our 'on_close' callback.
# It's only called if the connection isn't automatically renewed.
# In our case, unless the server shuts down, it won't be called.
on_close_proc = Proc.new { puts "Connection wasn't renewed..." }
# We will use this for "polling" data.
on_timer_proc = Proc.new { write "The time is #{Time.now}" }
# test client:
Iodine::Http.ws_connect 'wss://echo.websocket.org',
on_message: on_message_proc,
on_open: on_open_proc,
on_close: on_close_proc,
every: 5, send: on_timer_proc,
renew: 5,
cookies: {'my_cookie' => 'value of my cookie'} #,
# ssl_key: 'key_data', ssl_cert: 'cert_data'
# If you are running Iodine within irb, use `exit`:
exit
# If you are running Iodine within an existing server application,
# you will have to force it to start while your script is running:
# Iodine.force_start!
WebSocket эхо сервер отвечает мне на SSL ... Так что я надеюсь, что это поможет.
EDIT Этот ответ редактировался с тех пор, как Йод унаследовал кодовую базу GRHttp и находится в активной разработке, тогда как GRHttp больше не находится в активной разработке.
Вы запрашиваете 'wss', так вы его получаете? – tadman
Нет, напишите сейчас, я получаю: - завершение вызова после вызова экземпляра 'std :: runtime_error' what(): Шифрование недоступно на этой event-машине Это приложение попросило Runtime прекратить его в необычном путь. Для получения дополнительной информации обратитесь в службу поддержки приложения. –
У меня есть сервер websocket, который позволяет только безопасные соединения. –