Denken Sie daran, dass die Binärdatei nur codierte Daten ist. Dies ist weniger eine JavaScript-Frage und eher eine Codierungsfrage. So würde ich es machen.
Geben Sie zu Beginn Ihrer Anforderung 32 Bit (eine Ganzzahl) an, um die Bitlänge test.dat
anzugeben. Dann kombinieren Sie dies mit Ihren zwei Datenquellen. Ihre Nutzlast wird wie folgt aussehen:
text_length + TEST.DAT AS BINARY + filecontent AS BINARY
dann die Daten als Array-Puffer zurück. Verwenden Sie
textLengthBits = parseInt(arrBuffer.slice(0,32), 2);
Um die Länge des Textes zu erhalten. Dann wieder schneiden,
textBits = arrBuffer.slice(32, 32 + textLengthBits)
Um den Text zu bekommen. Die restlichen Bits sind deine Datei.
fileBits = arrBuffer.slice(32 + textLengthBits);
Vielleicht möchten Sie an einem anderen Datenaustauschformat suchen, die native Unterstützung für binäre Daten hat, wie MsgPack. – mpen
@mpen - webSocket unterstützt binäre Daten. – jfriend00
@ jfriend00 Richtig .. Ich sage, anstatt 'JSON.stringify' verwenden' msgpack.encode'. – mpen