提一个JAVA服务端WebSocket的问题

做了一个Demo,使用的是websocket,在web端运行是没有问题的,在原生就不能连接,然后在服务端查看了下,发现在web端第一次连接时,报头里没有Sec-WebSocket-Protocol这个内容,而在原生连接时会有这个字段,而且值为default-protocol,不知道有没有遇到的?请问该如何规避这种现象?

对应的连接代码是什么?引擎版本是什么?

我使用的引擎是cocos2d-js 3.12,客户端的连接代码如下:
var _hostName = ‘ws://192.168.1.106:8900/’;
this.m_socket = new WebSocket(_hostName );
this.m_socket.onopen = this.onOpen;
在web端是可以成功的,并且会成功调用onOpen,但是在原生就不行了

@dumganhar 建华看看有没有什么思路?

v3分支应该解决了。默认不传 default-protocol这个subprotocol了。
你java服务端应该也可以select protocol,放行这个名字为default-protocol的默认subprotocol就可以了。

感谢回复!请问下,客户端有没有办法使得不传递select protocol 或者修改传递select protocol的值?

现在在web端是没有传default-protocol这个subptotocol 的,但是在原生的时候会传递

需要修改cocos/network/Websocket.cpp这个文件,你搜索一下default-protocol, 改为空字符串应该就可以。

感谢回复,我有试过空字符串,改成空以后还是不行

有可能是Sec-WebSocket-Protocol这个字段,是不是报头里就不能有它??

这个还是需要的,你能跟踪一下服务端代码查查么?

我让服务端的同事帮忙看了下,在web端请求连接时,报头是没有这个字段的,所以我在想是不是在原生端也是不能有这个字段的。

不至于吧,这可是ws标准啊。https://tools.ietf.org/html/rfc6455#section-11.3.4

可这个问题确实存在呀,不知道该如何解决