Browse Source

fixed receiving one JSON object over multiple packets

master
mortie 6 years ago
parent
commit
7fe39817c9
1 changed files with 11 additions and 9 deletions
  1. 11
    9
      js/rpcconn.js

+ 11
- 9
js/rpcconn.js View File

@@ -22,7 +22,7 @@ class RPCConn {
obj = JSON.parse(json);
} catch (err) {
console.log("Failed to parse JSON: '"+json+"'");
throw err;
return;
}

if (obj.id == null) {
@@ -46,14 +46,17 @@ class RPCConn {
//Digest JSON lines as they come, but only if they're a whole line
var currdata = "";
this.sock.on("data", d => {
var s = d.toString();
currdata += s;
var arr = s.split("\n");
while (arr[1] != null) {
onjson(arr.shift());
arr.shift();
currdata += d.toString();

var start = 0;
for (var i = 0; i < currdata.length; ++i) {
if (currdata[i] === "\n") {
var s = currdata.substring(start, i);
start = i + 1;
onjson(s);
}
}
currdata = arr[0] || "";
currdata = currdata.substring(start);
});
}

@@ -79,7 +82,6 @@ class RPCConn {
else resolve(res);
}

console.log("Sending '"+json+"'");
this.sock.write(json+"\n");
this._id += 1;
});

Loading…
Cancel
Save