android 平台 连接 wss,无法连接成功

在微信小游戏使用wss连接服务器,正常,然后打包android 原生平台,发现wss ,连接不成功,通过论坛百度等,发现2.x,new websocket 第三个参数要传入服务器证书,然后3.x版本,new websocket 只有两个参数,所以,,该咋办了,求回复,求解答。。。

1赞

自己导入socket包不就好了

没用过3.x,不过我觉得可以试试照2.x的传法,有可能只是ts提示的问题

我一直挺好奇的 WS在2.X里一直用着还行都,但总是听到3.X的有这样那样的问题 应该是WS在3.X里做了什么改动,所以一直觉得奇怪 这种东西 和2D3D有什么关系吗 以前一直稳定的稳定的模块 完全不用动的都,为什么要改呢, 也问官方 反正没给过解答

我试过了,还是没用,不是ts提示问题。

是啊,3.x 变动很大,有点坑的。

怎么导入啊?求指导啊。

就是找一份第三方的socket库,拖到cocos里面,然后选择导入为插件,就可以cocos里面使用了

你的意思,不用cocos的android 那个websocket.cpp吗?

我现在用的是2.4.4,new WebSocket 也是只有两个参数啊,你按照2.X使用WebSocket第三个参数传证书试一下呗

resources.load(‘cert’, (err: any, res: TextAsset) => {
if (err) {
return;
}
const textData = res.text;
this.mWsSocket = new WebSocket(serverIp, null,textData);
})
这样传入参数是吧?


刚试了试,还是不行,报这个错。

res.text 的值是空的,换成 res.nativeUrl试试

没呢,res.text 是有具体的值,nativeUrl 这个反而为空了。

把证书放在resources目录下,Ioad得到的asset的nativeurl就是第三个参数了。

嗯,就是把证书放在resources目录下的,证书的后缀,需要改成.txt不,我改了下后缀,然后获取到的text有具体值,nativeUrl输出,发现是空字符串。。。

改成txt就没作用了,我改过。直接用原来的crt或pem就可以。
wss配置成不成功还是要用openssl测试一下。
第二参数用undefined,原生用nuⅠl好像会报错

看你的输出信息,证书并不完整。你要保证你服务器上的证书是完整的3层模式

设置下header?

传证书文件磁盘路径,底层(非引擎)会去读这个文件