[英]TCPSocket connection reset by peer
require 'socket'
socket = TCPSocket.open('stream-api.betfair.com', '443')
while line = socket.gets
puts line.chop
end
socket.close
我應該收到類似{"op":"connection","connectionId":"002-230915140112-174"}
但我收到Connection reset by peer
表示遠端將發送復位數據包(RST)來終止連接,而無需有序關閉(關閉)。 在那種情況下,您知道它是對等方(客戶端)。
betfair包括一個nodejs示例以及csharp / java示例
任何幫助深表感謝。 謝謝!
首先,您應該將字符串“ 443”替換為整數:
TCPSocket.open('stream-api.betfair.com', 443)
無論如何,這似乎與SSL協商有關:以下Stackoverflow帖子給出了一個可行的快速思路: 如何在Ruby中建立啟用SSL的TCP / IP連接 。 使用這種方法,我可以工作。
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"
在某些時候,Ruby處理SSL / TLS受保護的連接非常冗長。 在您提供的示例中,在NodeJS中,提示是第一行:
var tls = require('tls');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.