微信小程序websocket真机调试失败,开发者工具可以正常连接

5 阅读1分钟

uniapp开发发微信小程序,有websocket连接需求。在微信开发者工具中,websocket调试一切正常。但真机调试和体验版连接websocket。在socket.onError()会报错 {"errCode":1004,"errMsg":"open fail: _code:20,_msg:Invalid HTTP status."}

各平台和ai搜索原因大多归结于后台websocket服务器在握手环节没有返回101状态码,或服务器配置问题,还有socket的服务端版本可能与客户端版本不兼容。但本项目因为还有flutter版本开发没有问题,并且返回码在开发者工具中调试也没有任何问题,只有真机调试会出问题。

最后解决解决办法:将websocket连接地址url用encodeURI()编码

socket = uni.connectSocket({
	url: encodeURI(import.meta.env.VITE_WEBSOCKET_URL +'?Authorization=Bearer' +  ' ' + token + '&clientid='+ clientid,
	})

默默吐槽:微信小程序的报错太坑了,不会给出具体报错原因,太难查问题。作为一个前端太不友好。。。 只能说遇到这种情况只有真机报错,就先尝试这种方法看能不能解决