从 2 PassThrough Stream 创建双工流

问题描述

有没有办法从 2 个 PassThrough Streams 创建一个 Duplex 流? 我尝试构建一个编码和解码管道。一端是 WebSocket Stream,另一端应该是双工流。

目标是创建一个透明的编码/解码流,这似乎是我直接与 WebSocket(双工)流“对话”。 (ws 模块,WebSocket.createWebSocketStream

我发现 Duplexer 模块工作正常。但在某些情况下,我在代码的其他地方遇到了一些 ERR_INTERNAL_ASSERTION 错误,这真的很难调试。

出于测试目的,我想尝试没有模块的编码/解码流程。为此,我需要某种方式从 2 个 PassThrough 流创建单个双工流。

                   ----------------------- ENCODE FLOW -------------------------
                   | [Transform Stream] <- [Transform Stream] <- [PassThrgouh] |
WebSocket Stream < |                                                           | > Duplex 
                   | [Transform Stream] -> [Transform Stream] -> [PassThrgouh] | 
                   `---------------------- DECODE FLOW ------------------------´

我用来创建转换管道的代码

    stack(stack,upstream,options) {

        options = Object.assign({
            objectMode: true
        },options);

        let read = new PassThrough(options);
        let write = new PassThrough(options);
        let adapter = duplexer(write,read);

        // build encode flow
        stack.reduce((prev,cur) => {
            return prev.pipe(cur.encode);
        },write).pipe(upstream);

        // build decode flow
        stack.reduceRight((prev,cur) => {
            return prev.pipe(cur.decode);
        },upstream).pipe(read);

        return adapter;

    };

readwrite 是上述架构中的两个直通流。 “上游”WebSocket 流。 “Stack”是一个具有 encodedecode 属性的对象数组,表示转换流。

感谢您的任何提示/建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...