1 回答
TA贡献1775条经验 获得超8个赞
如果解码 JSON 没有错误,此行将发生恐慌:
fmt.Printf("Received command: %v (Error: %s)\n", command, err.Error())
如果 err == nil,则 err.Error() 会因 nil 指针推导而发生恐慌。将该行更改为:
fmt.Printf("Received command: %v (Error: %v)\n", command, err)
如果您正在读取套接字,则无法保证 s.Read() 将读取完整的 JSON 值。编写此函数的更好方法是:
func translateMessages(s socket) {
d := json.NewDecoder(s)
for {
fmt.Printf("Waiting for a message ... \n")
var command map[string]interface{}
err := d.Decode(&command)
fmt.Printf("Received command: %v (Error: %v)\n", command, err)
if err != nil {
return
}
}
}
如果您正在使用 websockets,那么您应该使用 gorilla/webscoket 包和ReadJSON来解码 JSON 值。
- 1 回答
- 0 关注
- 283 浏览
添加回答
举报
