秒钟获取或eof命令后,Ruby OpenSSL :: SSL :: SSLSocket挂起5分钟

时间:2018-09-15 22:07:36

标签: ruby tcp openssl

我正在尝试从TCP(SSL)服务器获取数据。

我可以成功建立连接,发送命令并读取结果(或至少一行)。

这是我的代码:

[1] pry(main)> tcp_client = TCPSocket.new("devel1.xxxx", 1234)
=> #<TCPSocket:fd 19>
[2] pry(main)> ssl_client = OpenSSL::SSL::SSLSocket.new(tcp_client)
=> #<OpenSSL::SSL::SSLSocket:0x007fd108a46240 @context=#<OpenSSL::SSL::SSLContext:0x007fd108a46218>, @eof=false, @io=#<TCPSocket:fd 19>, @rbuffer="", @sync=true>
[3] pry(main)> ssl_client.connect
=> #<OpenSSL::SSL::SSLSocket:0x007fd108a46240 @context=#<OpenSSL::SSL::SSLContext:0x007fd108a46218>, @eof=false, @io=#<TCPSocket:fd 19>, @rbuffer="", @sync=true>
[4] pry(main)> ssl_client.puts("{'msg': 'connect', 'projectID':'e4b8de7e-d020-4b80-b60f-f2baa08eeac7', 'username': 's', 'password': 's1234'}")
=> nil
[5] pry(main)> ssl_client.eof?
=> false
[6] pry(main)> ssl_client.gets
=> "{\"msg\":\"connected\",\"connectionid\":100,\"version\":\"2.3.5\"}\r\n"
[7] pry(main)> pp Time.now
=> 2018-09-16 00:00:19 +0200
[8] pry(main)> ssl_client.eof?
[9] pry(main)> pp Time.now
=> 2018-09-16 00:05:19 +0200

在命令6(返回数据)之后,是否有任何命令如eof?或需要5分钟的时间才能回复。是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

解决方案是在每次认沽后加\ r \ n:

赞:

ssl_client.puts("{'msg': 'connect', 'projectID':'e4b8de7e-d020-4b80-b60f-f2baa08eeac7', 'username': 's', 'password': 's1234'}\r\n")