Cocos Creator WebSocket 在web和原生环境中的一个问题

前端 Creator 版本 1.21-rc.1
后台 java WebSocket

创建 WebSocket 连接
var ws = new WebSocket(url);

在web环境下 连接正常 ,可是在 原生环境一下 一直无法连接,
查看后端代码 发现 两者在协议信息上有一个参数不同

web 环境下 Sec-WebSocket-Protocol 值为 null
原生环境下 Sec-WebSocket-Protocol 值是 default-protocol

原生环境下 可以通过 new WebSocket(url,potocal); 来更改这个参数,
但是web下面 无效一直都是null ,而原生环境无法设置为null 。

解决方法
后台必须包涵这两种情况才能 满足 web和原生 都能连接成功。

1赞

补充另外一个问题
var ws = new WebSocket(url);

如果关闭webSocket
ws.close(code,reason)
原生环境 会报参数个数错误。。。
而web下不会。。。。 统一不带参数 ws.close() 问题解决。

谢谢反馈,我们会尝试解决

panda 你好 我是一个初学者,之前看到官网上有不少的教程资源 ,为什么现在没有了,官方是否还会恢复?很希望官方可以恢复下教程资源 ,帮我们初学者更好的了解和学习该引擎

我们的教程资源入口在这里:

http://cocos.com/docs/creator/

你是说哪些没有了呢?

http://cocos2d-x.org/docs/manual/framework/cocos2d-js/catalog/index.html

http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/cocos2d-js/catalog/../1-about-cocos2d-js/1-1-a-brief-history/zh.md

比如这里的

这是以前的 cocos2d-js 的文档,可能是最近网站改版导致的,我反馈一下

多谢 论坛上很多人都在放映了已经 这里的资源对我们很有帮助

panda 请问下 这个大概什么时候会恢复呢?

null是"null"字符串么?

不是字符 ,是空值

了解,但是目前libwebsockets的c api是需要传入一个Protocol字符串的。

你好 http://www.cocos.com/doc/tutorial/index?type=cocos2d-js请问这个页面的外部教程怎么到现在还没恢复呢???难到是慢慢的就废弃了吗3

“解决方法
后台必须包涵这两种情况才能 满足 web和原生 都能连接成功。”
楼主,我不太明白你的意思,能大概说一下吗?谢谢啦

后台 java 使用的是 netty 框架 , 倒数第二个参数 需要自定义一个字符串,我这里是’default-protocol’

WebSocketServerHandshakerFactory wsShakerFactory = new WebSocketServerHandshakerFactory(
“ws://” + HttpHeaders.getHeader(httpRequest,
HttpHeaders.Names.HOST),
“default-protocol”, false);

前端
var ws = new WebSocket(url,‘default-protocol’); (第二个参数 与 java 后台参数一致,就可以了, url是服务地址 ws://…)

这样web,android,ios 都可以连接同一个后台