goim
goim copied to clipboard
websocket合并消息解析失败
https://github.com/Terry-Mao/goim/blob/a8942503cb368d1e131a1fd4e8ea68c5beb63260/examples/javascript/client.js#L68
for 里的packetLen值一值是外层变量的值,所以合并消息接收时只取到一个消息,重新定义一个新变量后,问题解决
let ipacketLen = 0
// batch message
for (let offset = rawHeaderLen; offset < data.byteLength; offset += ipacketLen) {
// parse
ipacketLen = dataView.getInt32(offset)
let headerLen = dataView.getInt16(offset + headerOffset)
let ver = dataView.getInt16(offset + verOffset)
let op = dataView.getInt32(offset + opOffset)
let seq = dataView.getInt32(offset + seqOffset)
let msgBody = textDecoder.decode(data.slice(offset + headerLen, offset + ipacketLen))
// callback
messageReceived(ver, op, msgBody)
if (self.options.Debug) {
appendMsg('receive: ver=' + ver + ' op=' + op + ' seq=' + seq + ' message=' + msgBody)
}
}