socket.addEventListener("message", function(packet) {
console.log(typeof packet);
if (typeof packet === "string"){
console.log(packet); // to handle error message sent by server
console.log("Message");
}
else{
parseBinary(packet.data); // to handle ByteBuffer packets sent by server
}
})
function parseBinary(packet) {
let len = packet.size, response = [];
let ab = new ArrayBuffer(len);
let dv = new Int8Array(ab);
for (let i = 0; i < len; ++i) {
dv[i] = packet[i];
}
let dvu = new DataView(ab);
let position = 0;
while (position != len) {
let type = dvu.getInt8(position);
position = position + 1;
switch (type) {
case 61:
processLtpPacket();
break;
}
}
}
function processLtpPacket() {
response.push({
last_price: dvu.getFloat32(position, true).toFixed(2),
last_trade_time: epochConverterUtil.EpochConverter(dvu.getInt32(position + 4, true)),
security_id: dvu.getInt32(position + 8, true),
tradable: dvu.getInt8(position + 12, true),
mode: dvu.getInt8(position + 13, true),
change_absolute: dvu.getFloat32(position + 14, true).toFixed(2),
change_percent: dvu.getFloat32(position + 18, true).toFixed(2)
});
position = position + 22;
}
In place of packet.size
If I give packet.length
its return undefined