cocos2dx-js惊天bug!!!!

呵呵 题目只是为了吸引与问题无关:),没办法这个问题弄了很久解决不了只能求助万能的网友了。

我程序里面用的websocket 在浏览器上能正常连接服务器,在模拟器在真机上也就是jsb模式下连接不上websocket, 服务器log错误码(websocket 1006)

#.服务器用python, 插件用基于twisted的 autobahn 地址(
http://autobahn.ws/python/websocket/examples.html) 实现的websocket版本为
WebSocket RFC6455(http://tools.ietf.org/html/rfc6455 )

autobahn:git地址https://github.com/tavendo/AutobahnPython
官网websocket demo 连接的是ws://echo.websocket.org web和jsb模式下都能正常连接, 把广网地址改成我写的服务器地址上面和上面出现的问题一样,web正常jsb连不上

初步判断是server端有问题 不过是使用的第三方websocket实现包 不知如何修改。

有人用server端是用python写的吗? python用什么websocket实现包能 支持cocos2dx-js jsb模式的websocket啊?

这个问题我也反馈过,但是官方没有解决,自己改引擎解决了,方法非正规军做法。有熟悉websocket 协议的深入研究下,期待完美解决。

个人非正规解决方案,提供参考:
原因初步判断是,建立websocket连接时,没指定协议,引擎使用默认协议(default-protocol),然后就连不上了。有可能是server端配置问题,但不熟悉rfc,没法改,然后从客户端入手了
解决方案是,建立连接时,不指定协议,就协议名称为null,让协议自己走默认协议。
修改:
在websocket.cpp文件中,将
char* name = new char;
strcpy(name, “default-protocol”);
_wsProtocols.name = name;
注释掉,_wsProtocols.name 赋值为nullptr

还有一处 libwebsocket_client_connect时会使用这个name,所以要处理把name设置为nullptr的异常处理情况。