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');
}); });

版权声明:本文博客原创文章,博客,未经同意,不得转载。

[Cocos2d-x]在Cocos2d-x 3.x如何通过版本号WebSocket连接server数据的传输的更多相关文章

  1. cocos2d 游戏开发:Cocos2d v3 &quot;hello world&quot;+显示飞船

    V3 RC4 版本号图片 显示一个飞船 将Chapter1中 SpaceCargoShip.png 文件 加入到项目里面. 代码在 init : CCSprite *spaceCargoShip = ...

  2. cocos基础教程(5)数据结构介绍之cocos2d::Value

    1.概述 cocos2d::Valie 是一个包含了很多原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外加 std::vec ...

  3. cocos基础教程(5)数据结构介绍之cocos2d::Map<K,V>

    1.概述 cocos2d::Map<K,V> 是一个内部使用了 std::unordered_map的关联容器模版. std::unordered_map 是一个存储了由key-value ...

  4. cocos基础教程(5)数据结构介绍之cocos2d::Vector

    cocos2d::Vector cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器.cocos2d::Vector<T>中的元素是按序存取的,它的低层实 ...

  5. ! cocos2d 预编译重复

    由于预编译文件重复,导致下面的类没有被编译,所以,在写代码的时候也没有提示还报错,说LoadingScene没有定义. #ifndef __HELLOWORLD_SCENE_H__ #define _ ...

  6. 【转】Enable ARC in a Cocos2D Project: The Step-by-Step-How-To-Guide Woof-Woof!

    On April 5, 2012, in idevblogaday, by Steffen Itterheim http://www.learn-cocos2d.com/2012/04/enablin ...

  7. Cocos2d-x3.0模版容器具体解释之二:cocos2d::Map&lt;K,V&gt;

    1.概述: 版本号: v3.0 beta 语言: C++ 定义在 "COCOS2DX_ROOT/cocos/base" 路径下的 "CCMap.h" 的头文件里 ...

  8. cocos2d触摸事件处理机制(2.x和3.x变化)

    2.x的触摸事件的版本号 触摸事件处理有2种子.以下单点触摸的样本.(另一种多点触摸屏). 创建cocos2d 该项目. 1. 重写下面虚函数. bool ccTouchBegan(cocos2d:: ...

  9. Cocos2d:使用 CCCamera 做滚动效果 (Four Ways of Scrolling with Cocos2D)

    原版的:http://www.koboldtouch.com/display/IDCAR/Four+Ways+of+Scrolling+with+Cocos2D There are two class ...

  10. 如何在Cocos2D 1.0 中掩饰一个精灵(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原帖来自Ray Wunderlich写的精彩的文章 How To ...

随机推荐

  1. 美版SOLOWHEEL与盗版SOLOWHEEL-IPS独轮车终极PK【图】_厂商资讯_太平洋电脑网

    http://g.pconline.com.cn/x/330/3304676.html

  2. U6Linux的文件权限与目录配置

    1.ll查看文件信息:[权限][连接][所有者][用户组][文件容量][修改日期][文件名] 2.第一个字符代表文件的属性:若为[d]则是目录.若为[-]则是文件.若为[l]则为连接. 3.chgrp ...

  3. maven仓库总结,maven私服搭建

    配置pom.xml依赖包时在这里找包的描述: http://search.maven.org/#browse 以java为根目录. mvn archtype:generate -DgroupId=zt ...

  4. hunnu-11546--Sum of f(x)

    Sum of f(x) Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Total submit users:  ...

  5. 就这样CSDN账号被人盗了??

    和往常一样,来到公司后的第一件事情就是看看自己博客.没想到今天一看,小伙伴惊呆了. 莫名其妙地多了这个多不是神马的博文,还好几篇. 这说明CSDN账号也不怎么安全哦,以后小伙伴们要注意了.

  6. cocos2d-x物业现场

    pushScene()和popScene()用法: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTYyNjY3MTc=/font/5a6L5L2 ...

  7. STM32F103 TIM1输出PWM设置

    //TIM1 分频 #define TIM1_DIV1 (1-1) #define TIM1_DIV2 (2-1) #define TIM1_DIV4 (4-1) #define TIM1_DIV8 ...

  8. [HDU 1427]速度计算24点(DFS暴力搜索)

    主题连接:  pid=1427">http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表 ...

  9. 京东评论情感分类器(基于bag-of-words模型)

    京东评论情感分类器(基于bag-of-words模型) 近期在本来在研究paraVector模型,想拿bag-of-words来做对照. 数据集是京东的评论,经过人工挑选,选出一批正面和负面的评论. ...

  10. HDU 4337 King Arthur&#39;s Knights 它输出一个哈密顿电路

    n积分m文章无向边 它输出一个哈密顿电路 #include <cstdio> #include <cstring> #include <iostream> usin ...