代码之家  ›  专栏  ›  技术社区  ›  fabOnReact

对等方重置TCPSocket连接

  •  0
  • fabOnReact  · 技术社区  · 7 年前
    require 'socket'
    socket = TCPSocket.open('stream-api.betfair.com', '443') 
    while line = socket.gets
      puts line.chop
    end
    socket.close
    

    I should receive {"op":"connection","connectionId":"002-230915140112-174"}

    但我收到 Connection reset by peer 哪一个

    表示远程端将发送重置数据包(RST)来终止连接,而无需有序关闭(close)。在这种情况下,您知道它是对等方(客户机)。

    贝特费尔包括在内 a nodejs example 而且 csharp/java examples

    非常感谢您的帮助。谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Atille    7 年前

    首先,应该将字符串“443”替换为整数:

    TCPSocket.open('stream-api.betfair.com', 443)
    

    How to establish a SSL enabled TCP/IP Connection in 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"
    

    使用Ruby处理SSL/TLS保护的连接有时相当冗长。在您给出的示例中,在NodeJS中,提示是第一行:

    var tls = require('tls');
    
    推荐文章