fad*_*bee 8 sockets duplex stream node.js
在最新的几个版本的NodeJS(编写时为v0.10.X)中,Streams API经历了一次欢迎的重新设计,我现在想开始使用它.
我想用一个实现协议的对象包装套接字的输入和输出.
所谓的Duplex接口,似乎只是任何可读写的流(如套接字).
目前尚不清楚双工是否应该像A或B,或者它是否无关紧要.
+---+ +---+
-->| A |--> | |-->
+---+ | B |
| |<--
+---+
Run Code Online (Sandbox Code Playgroud)
具有两个可写和两个可读对象的对象的正确代码结构/接口是什么?
+--------+ +----------+ +----
| r|-->|w r|-->|w
| socket | | protocol | | rest of app
| w|<--|r w|<--|r
+--------+ +----------+ +----
Run Code Online (Sandbox Code Playgroud)
上图中的问题是该protocol对象需要两个单独的read方法和两个write方法.
在我的脑海中,我可以使协议生成"左"和"右"双工对象,或"进入"和"出"双工对象(以不同的方式对其进行切片).
这些都是首选方式,还是有更好的解决方案?
| app |
+---------------+
^ |
| V
+-----+ +-----+
| | | |
+----------| |-| |-+
| protocol | .up | |.down| |
+----------| |-| |-+
| | | |
+-----+ +-----+
^ |
| V
+---------------+
| socket |
Run Code Online (Sandbox Code Playgroud)
我的解决方案是创建一个Protocol类,它创建了一个Up Transform和一个Down Transform.
在构造Up和Down变换时,Protocol构造函数传递一个引用(自身).然后_transform,每个上变换和下变换中的方法可以根据需要调用push自身,另一个Transform或两者.共同状态可以保留在Protocol对象中.
| 归档时间: |
|
| 查看次数: |
1461 次 |
| 最近记录: |