CocosCreator通用框架设计之网络(4)

接下来我们用一个简朴的例子来演示一下网络框架的根基利用,首先我们需要拼一个简朴的界面用于展示,3个按钮(毗连、发送、封锁),2个输入框(输入 url、输入要发送的内容),一个文本框(显示从处事器吸收到的数据),如下图所示。

该例子毗连的是 websocket 官方的 echo.websocket.org 地点,这个处事器会将我们发送给它的所有动静都原样返回给我们。

CocosCreator通用框架设计之网络

接下来,实现一个简朴的 Component,这里新建了一个 NetExample.ts 文件,做的工作很是简朴,在初始化的时候建设 NetNode、绑定默认吸收回调,在吸收回调中将处事器返回的文本显示到 msgLabel中。接着是毗连、发送和封锁几个接口的实现:

// 不要害的代码省略 @ccclassexport default class NetExample extends cc.Component { @property(cc.Label) textLabel: cc.Label = null; @property(cc.Label) urlLabel: cc.Label = null; @property(cc.RichText) msgLabel: cc.RichText = null; private lineCount: number = 0; onLoad() { let Node = new NetNode(); Node.init(new WebSock(), new DefStringProtocol()); Node.setResponeHandler(0, (cmd: number, data: NetData) => { if (this.lineCount > 5) { let idx = this.msgLabel.string.search("\n"); this.msgLabel.string = this.msgLabel.string.substr(idx + 1); } this.msgLabel.string += `${data}\n`; ++this.lineCount; }); NetManager.getInstance().setNetNode(Node); } onConnectClick() { NetManager.getInstance().connect({ url: this.urlLabel.string }); } onSendClick() { NetManager.getInstance().send(this.textLabel.string); } onDisconnectClick() { NetManager.getInstance().close(); } }

代码完成后,将其挂载加入景的 Canvas 节点下(其他节点也可以),然后将场景中的 Label 和 RichText 拖拽到我们的 NetExample 的属性面板中:

CocosCreator通用框架设计之网络

运行结果如下所示:

CocosCreator通用框架设计之网络

小结

可以看到,Websocket 的利用很简朴,我们在开拓的进程中会遇到各类百般的需求和问题,要实现一个好的设计,快速地办理问题。

我们一方面需要对我们利用的技能自己有深入的领略,websocket 的底层协议传输是如何实现的?与 tcp、http 的区别在那边?基于 websocket 可否利用 udp 举办传输呢?利用 websocket 发送数据是否需要本身对数据流举办分包(websocket 协议担保了包的完整)?数据的发送是否呈现了发送缓存的会萃(查察 bufferedAmount)?

别的需要对我们的利用场景及需求自己的领略,对需求的领略越透彻,越能做出好的设计。哪些需求是项目相关的,哪些需求是通用的?通用的需求是必需的照旧可选的?差异的变革我们应该封装成类或接口,利用多态的方法来实现呢?照旧提供设置?回调绑定?事件通知?

我们需要设计出一个好的框架,来合用于下一个项目,而且在一个一个的项目中优化迭代,这样才气成立深厚的沉淀、提高效率。

以上就是CocosCreator通用框架设计之网络的具体内容,更多关于CocosCreator框架设计之网络的资料请存眷剧本之家其它相关文章!

您大概感乐趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsjfxx.html