一段时间以来,我一直在使用旧的 Ruby 发行版(我认为它是 1.8.6),我在该发行版上使用套接字库进行了编码。旧库有一个方法叫ready? ,它检查是否还有数据要接收而不阻塞。在 1.9 中最好的替代品是什么?
我需要它的原因是因为我有一个结构如下的程序:
def handle_socket_messages
while true
break unless messages_to_send
sent_messages
end
while @s and @s.ready?
#read messages
readStr = @s.recv(0x1024)
...
end
end
(然后我有另一个循环,它继续执行 handle_socket_messages 方法,然后使用睡眠,这样循环就不会旋转得太快,以及其他一些方法。
如您所见,我需要检查我是否会使用@s.ready 接收数据?(@s 是一个套接字),否则循环挂在readStr = @s.recv(0x1024),其中套接字一直想要接收服务器不发送的数据(它在等待不应该发送的数据)。
这种方法的最佳替代品是什么?