[Cocos2d-x]在Cocos2d-x 3.x版本中如何通过WebSocket连接服务器进行数据传输
来源:互联网 发布:php时间戳长度 编辑:程序博客网 时间:2024/05/23 01:17
WebSocket
首先新建一个空的文件夹,通过npm安装nodejs-websocket
:
npm install nodejs-websocket
新建app.js
文件:
var ws = require("nodejs-websocket");ws.createServer(function(conn){ conn.on("text", function (str) { console.log("get the message: "+str); conn.sendText("the server got the message"); }) conn.on("close", function (code, reason) { console.log("connection closed"); }); conn.on("error", function (code, reason) { console.log("an error !"); });}).listen(8001);
通过node app.js
启动,这样服务器就搭建好了。
Cocos2d-x
- 首先在头文件中include头文件:
#include "network/WebSocket.h"
- 实现WebSocket的委托:
class HelloWorld : public cocos2d::Layer,public cocos2d::network::WebSocket::Delegate
- 四个委托中定义的函数接口以及一个用来连接的socketClient对象:
// for virtual function in websocket delegatevirtual void onOpen(cocos2d::network::WebSocket* ws);virtual void onMessage(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::Data& data);virtual void onClose(cocos2d::network::WebSocket* ws);virtual void onError(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::ErrorCode& error);// the websocket io clientcocos2d::network::WebSocket* _wsiClient;
- 初始化client:
_wsiClient = new cocos2d::network::WebSocket();_wsiClient->init(*this, "ws://localhost:8001");
- 在cpp文件中实现这些函数:
// 开始socket连接void HelloWorld::onOpen(cocos2d::network::WebSocket* ws){ CCLOG("OnOpen");}// 接收到了消息void HelloWorld::onMessage(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::Data& data){ std::string textStr = data.bytes; textStr.c_str(); CCLOG(textStr.c_str());}// 连接关闭void HelloWorld::onClose(cocos2d::network::WebSocket* ws){ if (ws == _wsiClient) { _wsiClient = NULL; } CC_SAFE_DELETE(ws); CCLOG("onClose");}// 遇到错误void HelloWorld::onError(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::ErrorCode& error){ if (ws == _wsiClient) { char buf[100] = {0}; sprintf(buf, "an error was fired, code: %d", error); } CCLOG("Error was fired, error code: %d", error);}
还有一个使用SocketIO的方案,尚未尝试,明天测试一下:
// Require HTTP module (to start server) and Socket.IOvar http = require('http'), io = require('socket.io');// Start the server at port 8080var server = http.createServer(function(req, res){ // Send HTML headers and message res.writeHead(200,{ 'Content-Type': 'text/html' }); res.end('<h1>Hello Socket Lover!</h1>');});server.listen(8080);// Create a Socket.IO instance, passing it our servervar socket = io.listen(server);// Add a connect listenersocket.on('connection', function(client){ // Create periodical which ends a message to the client every 5 seconds var interval = setInterval(function() { client.send('This is a message from the server! ' + new Date().getTime()); },5000); // Success! Now listen to messages to be received client.on('message',function(event){ console.log('Received message from client!',event); }); client.on('disconnect',function(){ clearInterval(interval); console.log('Server has disconnected'); });});
1 0
- [Cocos2d-x]在Cocos2d-x 3.x版本中如何通过WebSocket连接服务器进行数据传输
- [Cocos2d-x]在Cocos2d-x 3.x版本中如何通过WebSocket连接服务器进行数据传输
- cocos2d-x 关于websocket
- 【cocos2d-x教程】如何使用WebSocket
- [Cocos2d-x]Mac下cocos2d-x连接pomelo服务器
- [Cocos2d-x]Mac下cocos2d-x连接pomelo服务器
- Cocos2d-x 3.x版本---创建项目
- Cocos2d-x 3.x版本中SAX 解析 XML
- cocos2d x 3.x
- cocos2d-x 3.X 如何在android里添加广告
- Cocos2d-x中通过JNI进行C++调用Java代码
- Cocos2d-x中通过JNI进行C++调用Java代码
- Cocos2d-x中通过JNI进行C++调用Java代码
- Cocos2d-x中通过JNI进行C++调用Java代码
- Cocos2d-x中通过JNI进行C++调用Java代码
- Cocos2d-x中通过JNI进行C++调用Java代码
- Cocos2d-x中通过JNI进行C++调用Java代码
- Cocos2d-x版本升级
- c++ 产生随机数
- EXT日期时间选择控件,目前最好用的版本
- 按位与,按位或,异或等运算
- ReportStudio入门教程(五十九) - JS-设置下拉框默认值
- Linker Property Pages
- [Cocos2d-x]在Cocos2d-x 3.x版本中如何通过WebSocket连接服务器进行数据传输
- 人工智能会议(一流)
- java中常用的工具类(三)
- ubuntu14.04 安装redis
- Linux 学习笔记---SELinux与AppArmor
- Django开发综述1
- 7/3
- 网络IO模型
- linux 下iconv 的使用方法(编码转换)