使用YouTube视频聊天代码发起通话时遇JSON解析错误求助
问题分析与解决方案
错误Unexpected token 'o', "[object Blob]" is not valid JSON的核心原因是接收端尝试解析的内容是Blob对象的字符串表示,而非合法的JSON数据,问题大概率出在offer的发送或接收处理环节。
排查与修复步骤:
- 调整发送的数据结构
RTCSessionDescription对象可能包含不可序列化的内部属性,直接传递整个对象易导致序列化异常,或被dataService误处理为Blob。修改发送逻辑,只传递可序列化的核心属性:
// 替换原发送代码 this.dataService.sendMessage({ type: 'offer', data: { type: offer.type, sdp: offer.sdp } });
- 验证dataService.sendMessage的实现
确认该方法是否正确将传入对象序列化为JSON字符串发送。如果使用Fetch API,需确保请求体是JSON.stringify(payload),而非将对象包装为Blob:
// dataService内部正确实现示例 sendMessage(payload: any) { return fetch('/your-endpoint', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); }
- 修正接收端的处理逻辑
接收消息时,先解析JSON数据,再用它创建RTCSessionDescription:
// 接收端处理示例 async handleMessage(message: any) { if (message.type === 'offer') { const remoteOffer = new RTCSessionDescription(message.data); await this.peerConnection.setRemoteDescription(remoteOffer); // 后续通话逻辑... } }
内容的提问来源于stack exchange,提问作者ghassen chaieb
相关产品推荐
相关产品推荐

