如何使用golang websockets解码多种消息类型?

时间:2014-04-14 06:41:49

标签: websocket go

我有一个使用(相对)标准go.net/websocket‎库的go程序。我尝试接收和解码来自网页的消息,这些消息对于每种类型的消息具有不同的结构,即

{type: "messagetype", msg: { /* structure different for each message type */ } }

有没有办法做一个" partial"解码消息,只检查type字段,然后再将实际消息解码为go结构?

这是否需要编写一个自定义Codec,一个' la JSON,委托给消息本身的JSON编解码器?

1 个答案:

答案 0 :(得分:11)

使用json.RawMessage延迟解码,例如

struct {
    type string
    msg  json.RawMessage
}

json.RawMessage[]byte的别名,您可以根据需要进一步解码。