1. 客户端配置
1.1 WEB端
使用的是pomelo 0.9.10,但是pomelo生成项目里的build.js还是老版本,不支持reconnect,用下面连接的版本就可以:
https://github.com/NetEase/chatofpomelo-websocket/blob/master/web-server/public/js/lib/build/build.js
然后在project.json的jsList里直接引用即可:
"jsList" : [
"src/pomelo-cocos2d-jsb/build.js",
开发工具用的是Webstorm,平时逻辑功能的开发调试还是用WEB比较方便。( 如果build.js没有require('boot'),记得在文件中加入,不然没法识别 )
1.2 JSB环境
这个是开始在Android环境测试的结果。
在项目目录的frameworks/js-bindings/bindings/script目录下执行:
git clone https://github.com/Netease/pomelo-cocos2d-jsb.git --recursive
这样从pomelo官方下载pomelo在jsb环境下的客户端脚本,然后修改frameworks/js-bindings/bindings/script/jsb.js,在最后一行增加:
require('pomelo-cocos2d-jsb/index.js');
( 也可以在jslist中加入index.js文件,如同下面的IOS一样)
cocos2d-js 3.0 beta已经默认支持websocket,前面的版本还需修改项目目录下frameworks/runtime-src/Classes/AppDelegate.cpp,在头文件声明最后添加:
#include "network/jsb_websocket.h"
然后在sc->start();之前添加如下代码,增加websocket的支持:
sc->addRegisterCallback(register_jsb_websocket);
sc->start();
( 记得加入 libNetwork 库,不然又报link2019链接错误了,不懂加库请点这里)
另外在编译的时候,记得删除project.json的jsList里关于build.js的行,json文件里不能用注释,否则会黑屏。
1.3 IOS的JSB环境
编译IOS的ipa安装包时发现,frameworks/js-bindings/bindings/script/pomelo-cocos2d-jsb目录及以下文件都不会被打包到app里,导致jsb.js运行的时候出错,手机黑屏。正好在cocoachina论坛看到有位同学把pomelo-cocos2d-jsb放到src目录,用project.json的jsList进行加载:
"jsList" : [
"src/pomelo-cocos2d-jsb/index.js",
还需要修改一下pomelo-cocos2d-jsb/index.js最后几个require的代码:
...
require('src/pomelo-cocos2d-jsb/lib/emitter/index.js');
window.EventEmitter = Emitter;
require('src/pomelo-cocos2d-jsb/lib/pomelo-protocol/lib/protocol.js');
require('src/pomelo-cocos2d-jsb/lib/pomelo-protobuf/lib/client/protobuf.js');
require('src/pomelo-cocos2d-jsb/lib/pomelo-jsclient-websocket/lib/pomelo-client.js');
这样android和ios就通用了,而且可以方便实现热更新。就是project.json文件针对WEB和JSB有不同,记得打包的时候改一下。
1.1 WEB端
使用的是pomelo 0.9.10,但是pomelo生成项目里的build.js还是老版本,不支持reconnect,用下面连接的版本就可以:
https://github.com/NetEase/chatofpomelo-websocket/blob/master/web-server/public/js/lib/build/build.js
然后在project.json的jsList里直接引用即可:
"jsList" : [
"src/pomelo-cocos2d-jsb/build.js",
开发工具用的是Webstorm,平时逻辑功能的开发调试还是用WEB比较方便。( 如果build.js没有require('boot'),记得在文件中加入,不然没法识别 )
1.2 JSB环境
这个是开始在Android环境测试的结果。
在项目目录的frameworks/js-bindings/bindings/script目录下执行:
git clone https://github.com/Netease/pomelo-cocos2d-jsb.git --recursive
这样从pomelo官方下载pomelo在jsb环境下的客户端脚本,然后修改frameworks/js-bindings/bindings/script/jsb.js,在最后一行增加:
require('pomelo-cocos2d-jsb/index.js');
( 也可以在jslist中加入index.js文件,如同下面的IOS一样)
cocos2d-js 3.0 beta已经默认支持websocket,前面的版本还需修改项目目录下frameworks/runtime-src/Classes/AppDelegate.cpp,在头文件声明最后添加:
#include "network/jsb_websocket.h"
然后在sc->start();之前添加如下代码,增加websocket的支持:
sc->addRegisterCallback(register_jsb_websocket);
sc->start();
( 记得加入 libNetwork 库,不然又报link2019链接错误了,不懂加库请点这里)
另外在编译的时候,记得删除project.json的jsList里关于build.js的行,json文件里不能用注释,否则会黑屏。
1.3 IOS的JSB环境
编译IOS的ipa安装包时发现,frameworks/js-bindings/bindings/script/pomelo-cocos2d-jsb目录及以下文件都不会被打包到app里,导致jsb.js运行的时候出错,手机黑屏。正好在cocoachina论坛看到有位同学把pomelo-cocos2d-jsb放到src目录,用project.json的jsList进行加载:
"jsList" : [
"src/pomelo-cocos2d-jsb/index.js",
还需要修改一下pomelo-cocos2d-jsb/index.js最后几个require的代码:
...
require('src/pomelo-cocos2d-jsb/lib/emitter/index.js');
window.EventEmitter = Emitter;
require('src/pomelo-cocos2d-jsb/lib/pomelo-protocol/lib/protocol.js');
require('src/pomelo-cocos2d-jsb/lib/pomelo-protobuf/lib/client/protobuf.js');
require('src/pomelo-cocos2d-jsb/lib/pomelo-jsclient-websocket/lib/pomelo-client.js');
这样android和ios就通用了,而且可以方便实现热更新。就是project.json文件针对WEB和JSB有不同,记得打包的时候改一下。