EN
类别: 首页> Creator插件
skynet-sproto-js

skynet-sproto-js v1.0.2

类别:Creator插件

作者:antwand

要求:适用于Creator v2.2.0.0

分享到:
¥6.00 购买
简介
![skynet-sproto-js]
# skynet-sproto-js for Cocos Creator
* Cocos Creator 编辑器扩展:在 Cocos Creator 中,用纯 js 脚本实现‘云凤’ skynet 中 sproto 的压包解包处理,达到在 Cocos Creator 中和 skynet sproto 无缝通讯。
* skynet 中 sproto,请参考 [sproto 协议](https://blog.codingnow.com/2014/07/sproto.html ) 文档。
* skynet ,请参考 [skyent](https://github.com/cloudwu/skynet ) 文档。
* 使用参考 ,请参考 [skynet-sproto-js](http://forum.cocos.com/t/skynet-sproto-js-js-skynet-sproto/57799 ) 文档。
# 游戏中使用流程 #
#API 代码文本展现 (方便copy代码)
---
* PROTOCAL_CORE
* `loadSproto(sprotofilename,callback)` 加载sprotofilename文件的数据,放在resource文件下
| 参数 | 必选 |类型 | 说明 |
| --------- | --------|--------------- |------|
| sprotofilename | true |string | sproto文件名 |
| callback | false |function | 加载完成后的回调函数 |


* PROTOCAL_CORE
* `initSproto(spb)` 将加载后的spb转码数据,调用init方法初始化(所以可以自定义自己load自己的spb文件,不使用api的loadSproto方法,将数据丢进initSproto即可)
| 参数 | 必选 |类型 | 说明 |
| --------- | --------|--------------- |------|
| initSproto| true |array | spb转码的数据 |




* PROTOCAL_CORE
* `getSendPackage(cmd,param,sessionId)` 将数据打包,准备发送给服务器
| 参数 | 必选 |类型 | 说明 |
| -----------| --------|--------------- |------|
| cmd | true |string | 协议头名称,在sproto文件中定义 |
| param | true |table | 协议数据,根据协议自定义 |
| sessionId | true |int | sessionId,为了回调记录 |




* PROTOCAL_CORE
* `getRecvPackage(buffer,handleMessage_req,handleMessage_rsp)` 收到服务器的数据buff,将数据解包
| 参数 | 必选 |类型 | 说明 |
| -----------| --------|--------------- |------|
| buffer | true |Arraybuffer | 收到服务器的二进制数据包 |
| handleMessage_req | true |function | 服务器主动推送消息的回调处理函数 |
| handleMessage_rsp | true |function | 客户端通过sessionId发送给服务器,然后服务器在回调的处理函数 |
---
# 代码调用 #
* 1:首先,要将服务器的 s2c 以及 c2s 的sproto文件,通过tool工具转化成js的 sproto 文件
* 2:吧第一步生成的js识别的 sproto 文件,放到 Cocos Creator 工程项目下的 resource 文件夹中 即可
* 3:完整测试代码在 请参考 [sproto 项目测试](https://github.com/antwand/skynet-sproto-js ) 文档。
```javascript


//引入 PROTOCAL_CORE 核心类
var PROTOCAL_CORE = require('PROTOCAL_CORE');

//1: 加载 spb 协议文件,
var newpath = "SPROTO/sproto";//路径在resource/SPROTO/sproto.spb
PROTOCAL_CORE.loadSproto(newpath,function(data){
console.log(" 加载spb 文件成功!! ")
});
//注意事项
//这里 PROTOCAL_CORE.loadSproto 加载后系统会自动调用 PROTOCAL_CORE.initSproto()
//所以我们可以自定 load相关自己的spb文件,然后自己直接调用 PROTOCAL_CORE.initSproto() 也可以的
//启动websocket NetWebSocket 详见
var cla = require('NetWebSocket')
var currentNet = new cla();
currentNet.prepareWebSocket("192.168.103.98","8303");
this._currentNet = currentNet;
//2:客户端主动发送数据
var param = {
platform: 'mocha',
game: 'test',
token: '123456',
};
this._currentNet.send("login",param,function(data){
console.log("收到消息:" + data)
})

//3:服务器主动推送消息给客户端
this._currentNet._webSocket.onmessage = function (event) {
var data = event.data;

//json格式
if(this._isJson == true) {
var uint8Array = new Uint8Array(data);
var newdata = Utf8ArrayToStr(uint8Array);
var sz = newdata.length;
if (typeof(newdata) == "string") {
var msg = JSON.parse(newdata);
}
}else {//sproto 格式;
var _handleMessage_req = function(name,message){
}
var _handleMessage_rsp = function(sessionId, message){
}
PROTOCAL_CORE.getRecvPackage(data,_handleMessage_req,_handleMessage_rsp,self);
}
};
```
# 工具 tool 使用 #
* 注意工具tool目前只提供了mac下使用,windos后续会增加上去
* 1:安装 node
* 2:需要将skynet的lua版本转化为 Cocos Creator 识别的 sproto 文件
* 3:工具目录在 packages\skynet-sproto-js\tool 下,详见 请参考skynet-sproto-js安装包下的 [生成js版sproto工具 ](./tool/readme.md ) 文档。
# 问题 #
* 首先,要将服务器的 s2c 以及 c2s 的sproto文件,通过tool工具转化成js的 spb 文件
# 有问题反馈 #
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
* 邮件(antwand#sina.com, 把#换成@)
截图
用户评分
平均评分
共有0个用户评分
  • 0
  • 0
  • 0
  • 0
  • 0
评论
点击评分: