onMessage method
void
onMessage(
- RTCDataChannelMessage message
)
override
Implementation
@override
void onMessage(RTCDataChannelMessage message) {
//call ControlMessageHandler
print('[DataChannelObserver~${connection.connectionId}] onMessage: ${message.isBinary ? "binary data" : message.text}');
if (message.isBinary && message.binary != null) {
// _messageHandler.handleRawMessage(Uint8List.fromList(message.binary!));
final rtcData = RtcData.deserialize(message.binary);
if (rtcData.magic != RtcData.MAGIC) {
print("rtcData.magic != RtcData.MAGIC");
} else if (rtcData.version != RtcData.VERSION) {
print("version error:${rtcData.version}");
} else {
ALocalSampleOuterClass.ALocalSample sample = ALocalSampleOuterClass.ALocalSample.fromBuffer(rtcData.data);
if (sample.hasCmd() == false) {
print("sample has n't cmd\r\n");
return ;
}
int cmdValue = sample.cmd;
print("the cmdValue is ${cmdValue}");
if (cmdValue == ALocalSampleOuterClass.SampleCmd.CMD_HTTP_RESPONSE.value) {
String jsonString = utf8.decode(Uint8List.fromList(sample.data.toList()));
print("onMessage : ${jsonString}");
final httpMessage = WebRtcHttpMessage.fromJsonString(jsonString);
for (final message in WebrtcManager.messagesHandlers) {
message.receiveMessage(httpMessage);
}
}
}
} else if (message.text.isNotEmpty) {
// 尝试将文本消息作为 JSON 解析
try {
final httpMessage = WebRtcHttpMessage.fromJsonString(message.text);
// _messageHandler.receiveMessage(httpMessage);
for (final message in WebrtcManager.messagesHandlers) {
message.receiveMessage(httpMessage);
}
} catch (e) {
print('[WebRTCClient] Failed to parse text message: $e');
}
}
}