簡體   English   中英

TCPSocket連接被對等方重置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM