Cocos2d-x3.8.1网络编程(WebSocket)
来源:互联网 发布:python对比java 编辑:程序博客网 时间:2024/05/19 14:54
//同样Cocos2d-x游戏引擎对WebSocket进行了整合封装
//使用Websocket需要继承cocos2d::network::WebSocket::Delegate这个类,并重写4个纯虚函数
//加入头文件
#include "network/WebSocket.h"
//使用命名空间
USING_NS_CC;
using namespace cocos2d::network;
//.h文件
virtual void onOpen(cocos2d::network::WebSocket* ws);
virtual void onClose(cocos2d::network::WebSocket* ws);
virtual void onMessage(cocos2d::network::WebSocket* ws,const cocos2d::network::WebSocket::Data& data);
virtual void onError(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::ErrorCode& error);
cocos2d::network::WebSocket* _ws;
//.cpp文件
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if (!Layer::init())
{
return false;
}
Size size = Director::getInstance()->getWinSize();
//创建对象
_ws=new WebSocket();
if (!_ws->init(*this,"ws://echo.websocket.org"))
{
CC_SAFE_DELETE(_ws);
}
auto lblSendText = Label::create("send","Arial",22);
auto menuSendText = MenuItemLabel::create(lblSendText,[=](Ref *sender){
if (_ws!=nullptr)
{
//文本发送
_ws->send("HelloWord");
//二进制发送
char value[16]="HelloWord";
_ws->send((const unsigned char*)value,(unsigned int)strlen(value));
}
});
menuSendText->setPosition(size/2);
auto menu = Menu::create();
menu->setPosition(Vec2::ZERO);
menu->addChild(menuSendText);
addChild(menu);
return true;
}
void HelloWorld::onOpen(cocos2d::network::WebSocket* ws)
{
if (ws==_ws)
{
log("open");
}
}
//Data是WebSocket内部的结构体
void HelloWorld::onMessage(cocos2d::network::WebSocket* ws,const cocos2d::network::WebSocket::Data& data)
{
if (ws==_ws)
{
if (data.isBinary)
{
//二进制
std::string str;
for (int i = 0; i < data.len; i++)
{
if (data.bytes[i]!=0)
{
str+=data.bytes[i];
}
else
{
str+="\'\\0\'";
}
}
log("%s",str.c_str());
}
else
{
//文本
log("%s",data.bytes);
}
}
}
void HelloWorld::onClose(cocos2d::network::WebSocket* ws)
{
if (ws==_ws)
{
log("close");
}
}
//ErrorCode是WebSocket枚举类型
void HelloWorld::onError(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::ErrorCode& error)
{
if (ws==_ws)
{
log("error");
}
}
//运行程序
//当WebSocket初始化连接成功时
//点击label
//此时log出二行,一行是文本,一行是二进制发送
- Cocos2d-x3.8.1网络编程(WebSocket)
- Cocos2d-x3.8.1网络编程(HTTP)
- Cocos2d-x3.8.1网络编程(Socket)
- Cocos2d-x 之 WebSocket 网络编程
- 16.cocos2d-x网络编程二(WebSocket)
- cocos2d-x3.2与服务端框架Firefly的网络编程(初级网络通讯)
- cocos2d-x3.2与服务端框架Firefly的网络编程(深入网络通讯)
- 网络编程websocket
- cocos2d-x3.0之请求网络(php服务器)
- Cocos2d-x3.8.1加载csb文件
- Cocos2d-x3.8.1暂停与继续游戏
- Cocos2d-x3.8.1解析Json文件
- Cocos2d-x3.8.1制作愤怒的小鸟
- cocos2d-x网络编程
- cocos2d-x网络编程
- Cocos2d-x_HTTP网络编程
- Cocos2d-x 网络编程
- 【网络编程】——websocket简介
- 网络流24题 运输问题 最小费用最大流 模版
- C++学习日记
- CSS中的绝对布局
- C 递归和倒序计算
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C. Destroying Array 双向链表+反向做+优先队列
- Cocos2d-x3.8.1网络编程(WebSocket)
- C++中的字符串
- python挑战之level 29
- 匿名内部类详解
- 特斯拉电池组拆卸细节--BMS
- NOTE
- Eclipse将项目共享至新的SVN资源库
- dul无法加载bootstrap实现unload table/user恢复问题详解
- (总结)python基础知识二.1