Nodejs: Setzt highWaterMark des Socket-Objekts
kann der highWaterMark eines Socket-Objekts nach dessen Erstellung gesetzt werden:
var http = require('http');
var server = http.createServer();
server.on('upgrade', function(req, socket, head) {
socket.on('data', function(chunk) {
var frame = new WebSocketFrame(chunk);
// skip invalid frames
if (!frame.isValid()) return;
// if the length in the head is unequal to the chunk
// node has maybe split it
if (chunk.length != WebSocketFrame.getLength()) {
socket.once('data', listenOnMissingChunks);
});
});
});
function listenOnMissingChunks(chunk, frame) {
frame.addChunkToPayload(chunk);
if (WebSocketFrame.getLength()) {
// if still corrupted listen once more
} else {
// else proceed
}
}
Das obige Codebeispiel funktioniert nicht. Aber wie mache ich das stattdessen?
Weitere Erklärung: Wenn ich große WebSocket-Frames erhalte, werden diese in mehrere Datenereignisse aufgeteilt. Das macht es schwierig, die Frames zu analysieren, da ich nicht weiß, ob es sich um einen geteilten oder beschädigten Frame handelt.