在最新的幾個NodeJS版本(v0.10.X截止撰寫)中,Streams API經歷了一次可喜的重新設計,現在我想開始使用它。如何在NodeJS中對雙向雙工流進行編碼
我想包裝輸入和套接字的輸出與實現協議的對象。
所謂的Duplex接口,似乎只是任何可讀寫的流(如套接字)。
目前尚不清楚Duplexes是否應該像A或B一樣,還是不重要。
+---+ +---+
-->| A |--> | |-->
+---+ | B |
| |<--
+---+
對於具有兩個可寫和兩個可讀的對象,正確的代碼結構/接口是什麼?
+--------+ +----------+ +----
| r|-->|w r|-->|w
| socket | | protocol | | rest of app
| w|<--|r w|<--|r
+--------+ +----------+ +----
與上面的圖中的問題是,對象需要兩個單獨的read
方法和兩個write
方法。我可以使協議產生'左'和'右'雙工對象,或者'進入'和'出'雙工對象(以不同的方式對其進行切片)。
這些都是首選的方法,還是有更好的解決方案?
協議需要在兩次轉換之間共享狀態。如何做到這一點最好? – fadedbee
您可以設置標誌來表示狀態或存儲數據流中的數據。請參閱[simpleprotocolv2](http://nodejs.org/api/stream.html#stream_example_simpleprotocol_parser_v2)示例。你用這個'this._sawFirstCr = false; this._rawHeader = [];' – user568109
對於您的任務,最好用雙工完成,因爲兩個流都可以輕鬆看到標誌。對於轉換,您將不得不爲兩個流設置標誌兩次。 – user568109