我将 yew 与 WebsocketService 一起使用,并将 jsonrpcs 发送到后端并接收相应的答案。我很难区分有效和错误的 jsonrpc 答案。在模型实现中,我通过以下方式创建回调:
let callback = self.link.callback(|Json(data)| {
Msg::WsCallback(data)
});
WsCallback 是带有实际响应的消息:
pub enum Msg {
// ...
WsCallback(Result<WsResponse, Error>),
}
响应是实际的 JsonRpc 格式:
#[derive(Deserialize)]
pub struct WsResponse {
jsonrpc: String,
result: String,
id: i32,
}
适用于有效答案,但如何处理 JsonRpc 响应的错误情况,如下所示:
#[derive(Deserialize)]
pub struct JsonRpcError{
code: i32,
message: String,
}
#[derive(Deserialize)]
pub struct WsResponseErr {
jsonrpc: String,
error: JsonRpcError,
id: i32,
}
我可以对 Json 结构进行某种匹配吗?作为奖励问题:是否有可能解析具有不同于字符串的结果类型的有效响应?