H5踩坑

2016-10-10  本文已影响0人  鸡大

以下C++相关的都废了,老板终于决定废掉原来的服务器用C#重写了

MDZZ
Web Socket的C++实现采用开源库Web Socket++(还有一个beast.websocket,蛋四这个的参考资料比较少)
这个库基于Boost.asio,需要先配置boost,配置过程中的error:
Error:c4996 unsafe ,
无法解析的外部符号 "class boost::system::error_categorye
-D_SCL_SECURE_NO_WARNINGS: Properties->C/C++->Command Line->add option复制
无法解析的xxx__imp__ntohs@4 referenced in function xxx: #pragma comment(lib,"WS2_32.lib")
to_string is not a member of std:
MinGW官网上那个getMinGW安装的g++(5.3.0)对于c++11中的一部分在源码中没有实现,win上可以使用MinGW-w64的安装包,除了获取新版本的g++外,还可以选择x86_64,即64位g++程序,目前版本为4.5,g++版本更新到 6.2.0

Websocket++提供了多种config,其中config::core仅需要stl,编译环境仅依赖C++11,蛋四没有什么文档,好像是没有实现网络功能,总之不会用,大多采用config::asio,这套方案直接实现了网络功能,蛋四需要boost::asio,也就是需要先编一份boost出来

整个流程有两种思路:
1.h5客户端连接到AgentServer转发服务器,在转发服务器上维护客户端列表,Agent和Tcp服务器之间保持一个socket连接,转发服务器将每条消息标识来源ID转发给TcpSrv,TcpSrv处理之后标识接收者ID发送给Agent,由Agent再发送给对应的客户端
2.client连接到Agent之后Agent发起一个到Tcp的连接,客户端列表要存两份,Agent这里要存一个tcpClient-wsClient的map
打算先用第一种

原生Socket

先插个书签
所谓的事件绑定和回调,本质还是一个(独立线程中)while(true)嵌套for循环,每一次循环依次检查每一个连接上recv是否大于0来判断是否收到来自某个连接的数据

OVER



客户端部分使用Cocos Creator

JS脚本之类的
js里函数和变量本质上是一样的,声明都是var something = somethingElse
js中没有类和命名空间的概念,在creator中
var MyClass=cc.Class({ //使用这样的方式来定义一个,在cc.Class“命名空间”下
ctor:function(){} //构造函数,new的时候调用
})
var a=new MyClass(); //调用ctor
cc.Class({
extends:cc.Component, //组件脚本继承自cc.Component
properties:{}, //这里竟然支持get/set方法可怕
onLoad:function{}, //组件的初始化函数,类似于Unity脚本周期中的Awake?和Unity里一样,组件的初始化不要用new
start:function(){}, //onLoad之后调用,Unity start()函数
update:function{} //update函数,贴心的是新建脚本这个函数默认是被注释掉的,毕竟事件响应的实现方式比update里一串分支优雅的多
})


layaBox?

TypeScript

import [name =] namespace;js里是var name = namespace;
变量声明及初始化 var name:Type = new Type(args);
类函数声明 funName(args):return type{},不需要加关键字function

上一篇 下一篇

猜你喜欢

热点阅读