三九宝宝网宝宝百科宝宝知识

求助两个关于websocket通信的问题

01月11日 编辑 39baobao.com

[求助如何让宝宝接受奶瓶]1、给宝宝用奶瓶喂养的时候,一般前2~3小时不要给宝宝喂养任何东西,直到宝宝感到饥饿的时候,再递给宝宝奶嘴。 2、用奶瓶给宝宝喂养的时候,最好是用衣服包着宝宝。 3、一般只要把...+阅读

WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。 Cocos2d-x引擎集成libwebsockets,并在libwebsockets的客户端API基础上封装了一层易用的接口,使得引擎在C++, JS, Lua层都能方便的使用WebSocket来进行游戏网络通讯。

引擎支持最新的WebSocket Version 13。 在C++中使用 详细代码可参考引擎目录下的/samples/Cpp/TestCpp/Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp文件。 头文件中的准备工作 首先需要include WebSocket的头文件。 #include "network/WebSocket.h" cocos2d::network::WebSocket::Delegate定义了使用WebScocket需要监听的回调通知接口。使用WebSocket的类,需要public继承这个Delegate。

class WebSocketTestLayer : public cocos2d::Layer, public cocos2d::network::WebSocket::Delegate 并Override下面的4个接口: 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); 后面我们再详细介绍每个回调接口的含义。

新建WebSocket并初始化 WebSocket.org 提供了一个专门用来测试WebSocket的服务器"ws://echo.websocket.org"。 测试代码以链接这个服务器为例,展示如何在Cocos2d-x中使用WebSocket。 新建一个WebSocket: cocos2d::network::WebSocket* _wsiSendText = new network::WebSocket(); init第一个参数是delegate,设置为this,第二个参数是服务器地址。 URL中的"ws://"标识是WebSocket协议,加密的WebSocket为"wss://". _wsiSendText->init(*this, "ws://echo.websocket.org") WebSocket消息监听 在调用send发送消息之前,先来看下4个消息回调。

onOpen init会触发WebSocket链接服务器,如果成功,WebSocket就会调用onOpen,告诉调用者,客户端到服务器的通讯链路已经成功建立,可以收发消息了。 void WebSocketTestLayer::onOpen(network::WebSocket* ws) { if (ws == _wsiSendText) { _sendTextStatus->setString("Send Text WS was opened."); } } onMessage network::WebSocket::Data对象存储客户端接收到的数据, isBinary属性用来判断数据是二进制还是文本,len说明数据长度,bytes指向数据。

void WebSocketTestLayer::onMessage(network::WebSocket* ws, const network::WebSocket::Data& data) { if (!data.isBinary) { _sendTextTimes++; char times[100] = {0}; sprintf(times, "%d", _sendTextTimes); std::string textStr = std::string("response text msg: ")+data.bytes+", "+times; log("%s", textStr.c_str()); _sendTextStatus->setString(textStr.c_str()); } } onClose 不管是服务器主动还是被动关闭了WebSocket,客户端将收到这个请求后,需要释放WebSocket内存,并养成良好的习惯:置空指针。

void WebSocketTestLayer::onClose(network::WebSocket* ws) { if (ws == _wsiSendText) { _wsiSendText = NULL; } CC_SAFE_DELETE(ws); } onError 客户端发送的请求,如果发生错误,就会收到onError消息,游戏针对不同的错误码,做出相应的处理。 void WebSocketTestLayer::onError(network::WebSocket* ws, const network::WebSocket::ErrorCode& error) { log("Error was fired, error code: %d", error); if (ws == _wsiSendText) { char buf[100] = {0}; sprintf(buf, "an error was fired, code: %d", error); _sendTextStatus->setString(buf); } } send消息到服务器 在init之后,我们就可以调用send接口,往服务器发送数据请求。

send有文本和二进制两中模式。 发送文本 _wsiSendText->send("Hello WebSocket, I'm a text message."); 发送二进制数据(多了一个len参数) _wsiSendBinary->send((unsigned char*)buf, sizeof(buf)); 主动关闭WebSocket 这是让整个流程变得完整的关键步骤, 当某个WebSocket的通讯不再使用的时候,我们必须手动关闭这个WebSocket与服务器的连接。close会触发onClose消息,而后onClose里面,我们释放内存。

_wsiSendText->close(); 在Lua中使用 详细代码可参考引擎目录下的/samples/Lua/TestLua/Resources/luaScript/ExtensionTest/WebProxyTest.lua文件。 创建WebSocket对象 脚本接口相对C++要简单很多,没有头文件,创建WebSocket对象使用下面的一行代码搞定。 参数是服务器地址。 wsSendText = WebSocket:create("ws://echo.websocket.org") 定义并注册消息回调函数 回调函数是普通的Lua function,4个消息回调和c++的用途一致,参考上面的说明。

local function wsSendTextOpen(strData) sendTextStatus:setString("Send Text WS was opened.") end local function wsSendTextMessage(strData) recei...

以下为关联文档:

上学两个月总结300字主要是学到了什么,有什么成绩,以后如何学/ 没有范文 以下供参考, 主要写一下主要的工作内容,如何努力工作,取得的成绩,最后提出一些合理化的建议或者新的努力方向。。。。。。。...

求助 les怎么追女生阿阿楼主别听他们瞎扯,,你要是去表白的话风险很大的,,一旦遭到对方的正面拒绝的话你就真的没机会了,,,其实不需要说我喜欢你这几个字一样能传达的你爱!!多为她做点事,她能看见你的付出!!其实...

梦幻西游两个宝宝连到30级然后在炼妖能炼出多技能的宝宝吗1. 可能炼出多技能的宝宝; 2. 网易的几率是大家热衷于梦幻的根本,所以知道有多大几率就不是网易了。如果你非要一个概念的话,你照着10%去好了。点背的时候这个几率无线趋近于0....

英语口语考试My idol求助My idol has big brown eyes, long blond hair. Her name is Britney Spears. She was born on December 2, 198. She's a famous American female singer and actress.When...

儿科有一本SCI期刊叫ADC求助全称和简介全称是Archives of Disease in Childhood,《儿童期疾病档案》,是英国的老牌儿科及儿童健康方面的期刊,创刊已经90年了,是皇家儿科和儿童健康学院以及欧洲儿科学会的官方期刊。关...

九月份想跟老公去大理旅游两个人的花费大概要多少钱九月份学生开学后属于旅游淡季,这时候不论是住宿还是交通都不拥挤,价格也不贵。 大理淡季的时候一般宾馆的价格100元左右,可以去大理古城以及古城旁边的苍山,崇圣寺玩,还可以去洱...

两个多月的宝宝奶量是多少婴儿一天所需要奶的总量约等于婴儿体重公斤乘100(~120)毫升。一天喂奶总量不应超过1000毫升,应分5~6次喂。出生两个月的婴儿非常能吃奶粉冲的奶,如果让孩子尽情的吃,一次能吃15...

两个多月宝宝的奶量问题怎样喂养2-3个月的宝宝 2-3个月的宝宝的喂养应该根据母乳的量来决定喂养方式。 一、母乳充足时,2-3个月的宝宝体重平均每天增加30克左右,身高每月增加2厘米左右。过去吃奶吃得...

两个月宝宝母乳奶量是多少1、哺乳次数。出生后头1—2个月每天需要吃8—10次,3个月龄时间每天至少要吃8次。 2、排泄。每天换6块以上湿尿布。如果单纯依靠母乳喂养,婴儿的24小时小便次数达6次以上,是奶量...

推荐阅读
图文推荐