fix: use sparkplugb decoder only for spBv1.0 topic
This commit is contained in:
@@ -9,7 +9,7 @@ const root = protobuf.parse(protocol).root
|
|||||||
export let SparkplugPayload = root.lookupType('com.cirruslink.sparkplug.protobuf.Payload')
|
export let SparkplugPayload = root.lookupType('com.cirruslink.sparkplug.protobuf.Payload')
|
||||||
|
|
||||||
export const SparkplugDecoder = {
|
export const SparkplugDecoder = {
|
||||||
decode(input: Buffer): Base64Message | undefined {
|
decode(input: Buffer): Base64Message {
|
||||||
try {
|
try {
|
||||||
const message = Base64Message.fromString(
|
const message = Base64Message.fromString(
|
||||||
JSON.stringify(SparkplugPayload.toObject(SparkplugPayload.decode(new Uint8Array(input))))
|
JSON.stringify(SparkplugPayload.toObject(SparkplugPayload.decode(new Uint8Array(input))))
|
||||||
@@ -17,8 +17,9 @@ export const SparkplugDecoder = {
|
|||||||
message.decoder = Decoder.SPARKPLUG
|
message.decoder = Decoder.SPARKPLUG
|
||||||
return message
|
return message
|
||||||
} catch {
|
} catch {
|
||||||
// ignore
|
const message = Base64Message.fromString("Failed to decode sparkplugb payload")
|
||||||
|
message.decoder = Decoder.NONE
|
||||||
|
return message
|
||||||
}
|
}
|
||||||
return undefined
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,9 +47,16 @@ export class ConnectionManager {
|
|||||||
buffer = buffer.slice(0, 20000)
|
buffer = buffer.slice(0, 20000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let decoded_payload = null
|
||||||
|
if (topic.startsWith("spBv1.0/")) {
|
||||||
|
decoded_payload = SparkplugDecoder.decode(buffer)
|
||||||
|
} else {
|
||||||
|
decoded_payload = Base64Message.fromBuffer(buffer)
|
||||||
|
}
|
||||||
|
|
||||||
backendEvents.emit(messageEvent, {
|
backendEvents.emit(messageEvent, {
|
||||||
topic,
|
topic,
|
||||||
payload: SparkplugDecoder.decode(buffer) ?? Base64Message.fromBuffer(buffer),
|
payload: decoded_payload,
|
||||||
qos: packet.qos,
|
qos: packet.qos,
|
||||||
retain: packet.retain,
|
retain: packet.retain,
|
||||||
messageId: packet.messageId,
|
messageId: packet.messageId,
|
||||||
|
|||||||
Reference in New Issue
Block a user