Ruby OpenSSL :: SSL :: SSLSocket зависает на 5 минут после получения второй команды или команды eof - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь получить данные с сервера 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 голосов
/ 25 сентября 2018

Решением было ставить \ r \ n после каждого пута:

Как это:

ssl_client.puts("{'msg': 'connect', 'projectID':'e4b8de7e-d020-4b80-b60f-f2baa08eeac7', 'username': 's', 'password': 's1234'}\r\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...