关于使用 rust wasm 插件在处理 http body 时遇到的问题 #1465
-
https://github.com/alibaba/higress/blob/main/plugins/wasm-rust/example/sse-timing/src/lib.rs 以下这段代码
当 http 响应的 body 比较大的时候 end_of_stream 会显示 false,false, 最后变成 true, 但是变成 true 的时候 body_size 是 0 。这时候下面这段代码
真的能读取到完整的数据吗? 我测试下来是直接读取失败的. 为了解决上面的问题,我在写代码的时候自己写个一个 buff 来收集每次 end_of_stream = false 的时候的 body 数据 然后把这个 body 压缩之后再写入到 body 中 但是这个方法表现出的现象非常奇怪,压缩部分的内容是加在原来的 body 之后的。并没有覆盖掉原来的 下面是一部分代码片段
测试的效果截图,可以看到加在原来的 body 后面了 ![]() |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 16 replies
-
@007gzs 特别想要请教下 007 大佬 |
Beta Was this translation helpful? Give feedback.
-
每次回调 想一次性获取所有body数据可以参考 higress/plugins/wasm-rust/src/plugin_wrapper.rs Lines 447 to 461 in 9a1edcd |
Beta Was this translation helpful? Give feedback.
我成功了!最终的代码
多了一行,每次把原来的 body 给擦掉
self.replace_http_response_body(Vec::new().as_slice());