Cocos2d-x 之 WebSocket 网络编程
来源:互联网 发布:完美世界 游戏 知乎 编辑:程序博客网 时间:2024/05/20 14:26
WebSocket
WebSocket 是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
在cocos2d 中使用 WebSocket 与服务端通信非常简单
1. 继承WebSocket::Delegate并实现onOpen,onMessage,onClose和onError四个虚函数;
2. 创建WebSocket;
3. 初始化WebSocket(相当于链接服务器);
4. 发送数据;
5. 关闭WebSocket。
首先要引入相关库和使用相关命名空间
#include "network/WebSocket.h"using namespace cocos2d::network;
继承 WebSocket::Delegate
class HelloWorld : public cocos2d::Layer,public WebSocket::Delegate
实现四个虚函数
void HelloWorld::onOpen(WebSocket * ws){ m_log_text->setString("web socket connect success!");}void HelloWorld::onMessage(WebSocket * ws, const WebSocket::Data & data){ if (data.isBinary) { std::string str; for (int i = 0; i < data.len; i++) { str += (data.bytes[i]); } m_log_text->setString(str); } else { char str[256]; sprintf(str, "%s", data.bytes); m_log_text->setString(str); }}void HelloWorld::onClose(WebSocket * ws){ m_log_text->setString("WebSocket has been closed!"); m_wSocket = nullptr; CC_SAFE_DELETE(ws);}void HelloWorld::onError(WebSocket * ws, const WebSocket::ErrorCode & errorCode){ char str[256]; sprintf(str, "error code:%d", errorCode); m_log_text->setString(str);}
创建Socket、初始化Socket
void HelloWorld::onOpenBtnClick(Ref * pRef){ if (m_wSocket == NULL) { //创建WebSocket m_wSocket = new WebSocket(); //初始化WebSocket,这一步会链接服务器 m_wSocket->init(*this, "ws://echo.websocket.org"); }}
发送消息
void HelloWorld::onSendTxtBtnClick(Ref * pRef){ //发送文本消息 if (m_wSocket) { static int inx = 1; char str[256]; sprintf(str, "hello world! :with text :No %d", inx++); m_wSocket->send(str); }}void HelloWorld::onSendBinBtnClick(Ref * pRef){ //发送二进制消息 if (m_wSocket) { static int inx = 1; char str[256]; sprintf(str, "hello world! :with binary :No %d", inx++); m_wSocket->send((unsigned char*)str, sizeof(str)); }}
关闭Socket
void HelloWorld::onCloseBtnClick(Ref * pRef){ //关闭WebSocket if (m_wSocket) { m_wSocket->close(); }}
阅读全文
0 0
- Cocos2d-x 之 WebSocket 网络编程
- 16.cocos2d-x网络编程二(WebSocket)
- Cocos2d-x 之 Http 网络编程
- cocos2d-x网络编程
- cocos2d-x网络编程
- Cocos2d-x 网络编程
- Cocos2d-x3.8.1网络编程(WebSocket)
- cocos2d-x 网络编程Curl
- 详解Cocos2d-x网络编程
- cocos2d-x 网络编程Curl
- cocos2d-x 关于websocket
- 【Cocos2d-x】Cocos2d-X网络编程-HttpRequest/HttpClient/HttpResponse
- cocos2d-x-LuaProxy学习 C/S通信交互之WebSocket
- quick-cocos2d-x 学习系列之十二 关于websocket
- 使用CCHttpClient进行cocos2d-x网络编程
- 使用CCHttpClient进行cocos2d-x网络编程
- 使用CCHttpClient进行cocos2d-x网络编程
- 使用CCHttpClient进行cocos2d-x网络编程
- 奇 偶校验与起始位 数据位 校验位 停止位 位时间 帧 波特率
- Git常用命令备忘
- Git 服务器搭建与客户端安装
- 1038: 绝对值最大
- 优先队列用法
- Cocos2d-x 之 WebSocket 网络编程
- 2017 四川省赛训练总结 2017/7/16
- HTML的表单操作
- 数组常见操作
- 前端表单验证常用的15个JS正则表达式
- “人工智能2.0”的来龙去脉与人工智能发展规划
- Cent OS 安装MySQL-Service警告:... DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY ...
- 进程和线程关系及区别
- JSP基本语法