Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

两种可能导致 The key-value separator ":" is not found in the sse line chunk! 问题的情况 #483

Open
zhizuqiu opened this issue Jan 17, 2025 · 1 comment
Labels
bug Something isn't working

Comments

@zhizuqiu
Copy link

重现步骤

问题描述:

在 python 环境下,我使用 sse_starlette 这个库来实现 SSE 协议,有两种情况会导致 ant-design-x 解析 SSE 格式失败:

  1. 默认情况下,sse_starlette 使用 \r\n 来分割同一事件的各行,我看 ant-design-x 的 x-stream 使用的是 '\n' 进行解析,这种情况下就会报错。我通过设置 EventSourceResponse(generate_stream(), sep="\n") 可以正常使用。
  2. sse_starlette 会每隔 15 秒发送一个 ping 注释信息,格式如下:
Image

看协议中也有对此行为的相关解释:https://html.spec.whatwg.org/multipage/server-sent-events.html#authoring-notes

Legacy proxy servers are known to, in certain cases, drop HTTP connections after a short timeout. To protect against such proxy servers, authors can include a comment line (one starting with a ':' character) every 15 seconds or so.

请确认以上推测是否正确?如果正确是否可以提供相应的功能升级:

1.支持更多换行符的覆盖("\r\n", "\r", "\n"),或者支持开发者可配置此参数
2.支持对于注释事件的处理

当前行为

No response

预期行为

No response

上下文

No response

版本

1.0.5

您在哪些浏览器上遇到了这个问题?

Chrome, Microsoft Edge

@zhizuqiu zhizuqiu added the bug Something isn't working label Jan 17, 2025
Copy link

感谢您详细描述了问题。根据您提供的信息,您在使用 sse_starlette 库实现 SSE 协议时,遇到了 ant-design-x 解析 SSE 格式失败的情况。您提到的两种情况确实可能导致解析失败:

  1. 换行符问题:默认情况下,sse_starlette 使用 \r\n 来分割事件的各行,而 ant-design-x 的 x-stream 使用 \n 进行解析。这种不匹配会导致解析错误。您通过设置 EventSourceResponse(generate_stream(), sep="\n") 解决了这个问题。

  2. 注释事件问题sse_starlette 每隔 15 秒发送一个 ping 注释信息,这符合 SSE 协议中为了防止代理服务器超时而发送注释行的做法。然而,ant-design-x 可能没有正确处理这些注释行。

对于您的功能升级建议:

  1. 支持更多换行符:支持 \r\n, \r, \n 的覆盖,或者允许开发者配置此参数,确实是一个合理的功能增强建议。

  2. 支持注释事件处理:处理注释事件也是符合 SSE 协议的合理要求。

我建议您将这些建议提交为功能请求,以便开发团队可以考虑在未来的版本中实现这些改进。如果您需要,我可以帮助您创建一个功能请求。请确认是否需要我协助创建此请求。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant