java - Curl Server Sent Event 管道时无输出

标签 java curl server-sent-events

我尝试使用 sse 从服务器拖尾日志,curl 与 sse 一起工作正常,但是当通过管道传输时,curl 不会输出任何内容

# This is ok
curl localhost:8080/logging/tail

输出

data:2017-06-14 11:57:21.345  WARN 56999 --- [nio-8080-exec-4] a.b.c    : ABC


data:2017-06-14 11:57:21.353  INFO 56999 --- [nio-8080-exec-4] a.b.c    : DEF

有管道

# Nothing show up, with -s or not
# Without -s, the process show's curl do receive data
curl -s localhost:8080/logging/tail | sed '/^\s*$/d'
curl -s localhost:8080/logging/tail | cat

如何使 curl sse 与管道一起工作? 我想删除 data: 前缀和 sse 输出的空行。

$ curl --version
curl 7.51.0 (x86_64-apple-darwin16.0) libcurl/7.51.0 SecureTransport zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets

服务器是spring SseEmitter。

最佳答案

根据 this answer , 您可以添加 --no-buffer or -N到 curl 命令

-N/--无缓冲

关于java - Curl Server Sent Event 管道时无输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44535283/

相关文章:

linux - curl POST 和 GET 响应

nginx - 使用 SSE 的乘客(服务器发送的事件)

java - BufferedWriter 未写入文件

java - 不断收到 "catch without try"错误

java - 如何通过 Reflection API 复制对象?

Java switch 失败

linux - curl tlsv1.2 选项不起作用

php - 使用 cURL 登录,然后使用 cURL 发出另一个请求

HTTP:流水线、保持事件和服务器发送事件之间的关系是什么?

javascript - Ob_end_flush 不断产生错误