【发布时间】:2020-01-13 16:38:54
【问题描述】:
Ruby 2.5 的 doc
说:myTCPServer = Socket.tcp(host, port, nil, nil, :connect_timeout=60),
它接受的唯一选项是:connect_timeout。
(Ruby 2.0 的 doc 可能存在复制粘贴错误,
声称:timeout 是另一种选择,但没有说明该选项的作用。无论如何,该选项在 Ubuntu 18.04 LTS 上的 2.5.1p57 中不起作用。)
gem tcp_timeout 是创建 TCP 套接字的最佳方法,其连接的会话可以在指定的持续时间内读取超时,例如通过 mySession.gets?
(connect 没有超时。
写入没有超时。)
还是IO::select?
【问题讨论】:
-
“最好的方法”?谁知道。似乎没有内置方式。 tcp_timeout 在后台使用 IO::select,所以这种方法肯定有效。一个简单的基于线程的计时器也可以工作。
标签: ruby sockets timeout ruby-2.5