Go+ReactJS WebSocket场景下不影响运行的JSON解析错误原因问询
问题:Go开发WebSocket服务对接React客户端出现非中断性JSON解析报错
首次使用Go开发WebSocket服务,对接的客户端为ReactJS单页应用,遇到报错Uncaught SyntaxError: Unexpected token l in JSON at position 0,但程序并未中断,仍能正常执行后续逻辑。
客户端JS代码
const socket = new WebSocket("ws://localhost:5000/ws"); setConnection(socket); socket.onmessage = (e) => { const message = JSON.parse(e.data) console.log("message:", message) switch (message.Command) { case "loginResult": if (message.Result) { console.log("login worked"); }else{ console.log("login did not work"); } break; } }
服务端Go发送消息代码
result := ws.LoginResult{ BaseMessage: ws.BaseMessage{ Command: "loginResult", }, Result: false, } b, err := json.Marshal(result) if err != nil { fmt.Println(err) return } if err = conn.WriteMessage(msgType, b); err != nil { return }
控制台输出日志
in here WebsocketProvider.tsx:20 message: {Command: 'loginResult', Result: false} WebsocketProvider.tsx:27 login did not work VM3502:1 Uncaught SyntaxError: Unexpected token l in JSON at position 0 at JSON.parse (<anonymous>) at WebSocket.socket.onmessage (WebsocketProvider.tsx:19) socket.onmessage @ WebsocketProvider.tsx:19
问题成因与解决方案
- 该问题由代码迁移过程中遗留的无效调用语句导致,该语句执行时被忽略,因此不影响主逻辑运行;
- 问题与JSON格式无关,相关JSON由Go标准库自动生成,格式合规。
内容的提问来源于stack exchange,提问作者Jake Chapman
相关产品推荐
相关产品推荐

