Die Dokumentation für write () lautet:
Gibt false zurück, um anzuzeigen, dass der Kernel-Puffer voll ist, und die Daten werden in Zukunft gesendet.
und die Dokumentation für das drain
-Ereignis lautet:
Nachdem eine write () -Methode false zurückgegeben hat, wird dieses Ereignis ausgegeben, um anzuzeigen, dass es sicher ist, erneut zu schreiben.
Was heißt das? Muss ich auf das drain
-Ereignis warten, bevor ich wieder schreiben kann? Was ist mit den Daten passiert, die ich versucht habe zu schreiben? Ist das verloren? Was passiert, wenn ich schreibe, ohne auf das Ereignis drain
zu warten?
Sie können write()
aufrufen, ohne sich um den Rückgabewert zu kümmern. Der Knoten puffert alle Schreibaufrufe, während der Kernel-Puffer voll ist, und verschiebt sie in der richtigen Reihenfolge. Sie müssen nicht auf das Ereignis 'drain'
warten, bevor Sie erneut schreiben.
Optional können Sie den Rückgabewert von write()
überprüfen und dann das Objekt benachrichtigen, das in den Stream schreibt, dass der Puffer voll ist. Genau das macht Stream#pipe()
.
Also benutze normalerweise Stream#pipe()
und alle Goodies sind für dich erledigt:)