[Cocos2d-x]在Cocos2d-x 3.x如何通过版本号WebSocket连接server数据的传输
2023-09-14 09:08:09 时间
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 delegate
virtual 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 client
cocos2d::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.IO
var http = require('http'), io = require('socket.io');
// Start the server at port 8080
var 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 server
var socket = io.listen(server);
// Add a connect listener
socket.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');
});
});
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- RealVNC Server Ubuntu 20.04 无显示器连接 虚拟显示器
- k8s first commit 源码分析之 API Server
- 如何使用码匠连接 Microsoft SQL Server
- 【WebP Server】灵活实现站点图片平滑过渡WebP
- 教你远程连接SQL Server 2014数据库的方法
- SQLServer 错误 10061 在建立与服务器的连接时出错。 在连接到 SQL Server 时,在默认的设置下 SQL Server 不允许远程连接可能会导致此失败。 (提供程序:TCP 提供程序,错误:0 – 因目标计算机主动拒绝该连接而导致无法建立连接。) (Microsoft SQL Server,错误:10061) 故障 处理 修复 支持远程
- win2008 r2 安装sql server 2005/2008 无法连接服务器解决方法
- Window server中安装Redis的超详细教程
- sql server比较Oracle 与 SQL Server的优缺点(oracleltgt)
- 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法
- Python轻松连接SQL Server数据库(python连接sqlserver)
- 使用Lua连接Microsoft SQL Server数据库(luamssql)
- 注册SQL Server:步步高升(注册sqlserver)
- VS连接SQL Server:让你从此走向数据库的新世界(vs连sqlserver)
- T3连接SQL Server——打开数据库可能之路(t3连sqlserver)
- SQL Server 连接表:简易操作指南(sqlserver连接表)
- SQL Server记录集:统一数据服务管理(sqlserver记录集)
- SQL Server表级锁定技术研究(sqlserver表锁住)
- 连接SQL Server通过域名快速连接网络服务器(sqlserver用域名)
- SQL Server下空转:无连接的痛苦(sqlserver无连接)
- SQL Server列拼接:提升数据处理效率(sqlserver拼接列)
- 连接使用SQL Server数据库:远程连接实现可能性(sqlserver开远程)
- SQL Server 建模技术:简洁优雅架构(sqlserver 建模)
- SQL Server侦听器:实现网络服务到数据库的连接(sqlserver侦听器)
- 执行SQL Server代码执行:一种快速、高效的解决方案(sqlserver代码)
- 【SQL Server技术交流:提高技能、分享成果】(sqlserver交流)
- 服务SQL Server 云端服务:利用云技术实现数据连接(sqlserver云端)
- PowerBuilder连接MS SQL Server数据库的指南(pb连接mssql数据库)