我正在研究如何实现允许通过 HTTP 传输数据的 CONNECT HTTP 方法的可能性。但是,我找不到如何在一个 Snap 请求中实现双向处理的方法。我发现的最接近的是transformRequestBody
transformRequestBodySource :: (forall a. Enumerator Builder IO a) -> Snap ()
但这只会将请求输入转换为响应输出,而我需要同时处理输入和输出以将数据中继到请求的目标资源。
我正在研究如何实现允许通过 HTTP 传输数据的 CONNECT HTTP 方法的可能性。但是,我找不到如何在一个 Snap 请求中实现双向处理的方法。我发现的最接近的是transformRequestBody
transformRequestBodySource :: (forall a. Enumerator Builder IO a) -> Snap ()
但这只会将请求输入转换为响应输出,而我需要同时处理输入和输出以将数据中继到请求的目标资源。
我相信这是通过escapeHttp。我通过查看websockets-snap 的源代码发现了这一点,这可能是升级连接的正确方法。
作为参考,在 WAI 世界中,这是通过responseRaw
函数处理的。