goim icon indicating copy to clipboard operation
goim copied to clipboard

websocket合并消息解析失败

Open weisd opened this issue 3 years ago • 0 comments

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)
            }
          }

weisd avatar Dec 02 '20 02:12 weisd