所以,我有这个:
my $conn = await IO::Socket::Async.connect('127.0.0.1', 12340);
$conn.print: "GET /rest HTTP/1.1\r\n\r\n";
Run Code Online (Sandbox Code Playgroud)
如何只接收来自服务器的第一行?
我可以使用whenever并在其中添加一些逻辑,但有一个更简单的方法,对吗?
如果您确实只想要第一行,而不关心响应的其余部分,那么您可以这样做:
my $first-line = await $conn.Supply.lines.first;
Run Code Online (Sandbox Code Playgroud)
也就是说,获取Supply表示响应流的 ,将其分成几行(这会产生一行Supply),并获取到达的第一行。任何超出第一行的数据都将被丢弃。
IO::Socket::Async其工作原理是在数据包到达时提供数据包。它不涉及提供面向线路的接口;如果一个协议确实像逐行读取那么简单,那么 areact whenever $conn.Supply.lines -> $line { }就会做到这一点(并正确处理按数据包分割的行)。
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |