下面是给代码块添加注释的示例:
void Widget::receiveMsg(const QString &msg) {
QJsonDocument jd = QJsonDocument::fromJson(msg.toLatin1().data());
if (jd.isNull()) {
// 如果消息不是合法的JSON格式,说明是普通文本消息
QWebSocket *websocket = qobject_cast<QWebSocket*>(sender());
ui->textEdit_MsgList->append("收到客户端消息[" + websocket->origin() + "]--->" + msg);
} else {
// 如果消息是合法的JSON格式,提取目标地址并发送给对应的Websocket客户端
QJsonObject jdo = jd.object();
QString dst = jdo["dst:"].toString("O");
for (auto socket : websocketList) {
if (dst == socket->origin()) {
socket->sendTextMessage(msg);
}
}
}
}
在这段代码中,首先判断收到的消息是否为合法的JSON格式。如果不是,则将其视为普通文本消息,并将发送者和消息内容显示在UI界面上。如果是合法的JSON格式,解析出目标地址,并将该消息发送给与目标地址匹配的Websocket客户端。
内容由零声教学AI助手提供,问题来源于学员提问