Nelle ultime versioni di NodeJS (v0.10.X al momento della scrittura), l'API di Streams ha subito una nuova riprogettazione e vorrei iniziare a utilizzarla ora.Come codificare i flussi duplex bidirezionali in NodeJS
Desidero avvolgere sia l'input sia l'output di un socket con un oggetto che implementa un protocollo.
La cosiddetta interfaccia Duplex, sembra essere solo un flusso leggibile e scrivibile (come una presa).
Non è chiaro se i duplex devono essere come A o B o se non è importante.
+---+ +---+
-->| A |--> | |-->
+---+ | B |
| |<--
+---+
Qual è la struttura di codice/interfaccia corretta per un oggetto che ha due scrivibili e due leggibili?
+--------+ +----------+ +----
| r|-->|w r|-->|w
| socket | | protocol | | rest of app
| w|<--|r w|<--|r
+--------+ +----------+ +----
Il problema con il diagramma sopra è che l'oggetto necessita di due distinte read
metodi e due write
metodi.
In cima alla mia testa, potevo fare in modo che il protocollo producesse gli oggetti duplex "di sinistra" e "di destra" o gli oggetti duplex "dentro" e "fuori" (per suddividerlo in un modo diverso).
Sono uno di questi il modo preferito oppure esiste una soluzione migliore?
Il protocollo deve condividere lo stato tra le due trasformate. Come è meglio fare questo? – fadedbee
È possibile impostare i flag per rappresentare lo stato o memorizzare i dati all'interno di un flusso. Vedi l'esempio [simpleprotocolv2] (http://nodejs.org/api/stream.html#stream_example_simpleprotocol_parser_v2). Lo fai con questi 'this._sawFirstCr = falso; this._rawHeader = []; ' – user568109
Per il tuo compito è meglio farlo con il duplex in quanto entrambi i flussi possono vedere facilmente le bandiere. Per le trasformazioni dovrai impostare le bandiere due volte per entrambi i flussi. – user568109