Во-первых, вы должны заменить строку '443' на целое число:
TCPSocket.open('stream-api.betfair.com', 443)
В любом случае, похоже, что это связано с обсуждением SSL: следующий пост Stackoverflow дает краткое представление о том, что будет работать: Как установить соединение TCP / IP с включенным SSL в Ruby . Используя этот метод, я работаю.
require 'socket'
require 'openssl'
host = 'stream-api.betfair.com'
port = 443
socket = TCPSocket.open(host,port)
ssl_context = OpenSSL::SSL::SSLContext.new()
ssl_context.ssl_version = :SSLv23
ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context)
ssl_socket.sync_close = true
ssl_socket.connect
while line = ssl_socket.gets
p line
end
ssl_socket.close
Результат:
"{\"op\":\"connection\",\"connectionId\":\"001-151118094105-259478\"}\r\n"
Работа с защищенным соединением SSL / TLS иногда довольно многословна с Ruby. В приведенном вами примере в NodeJS подсказка является первой строкой:
var tls = require('tls');