websocket在线测试服务器(如何在WebSocket的服务器侧检测客户端的断开连接)

2024-06-28 18:03:40 19

websocket在线测试服务器(如何在WebSocket的服务器侧检测客户端的断开连接)

本文目录

如何在WebSocket的服务器侧检测客户端的断开连接

我用chrome启动websocket,用c#写服务器。能够建立链接(handshake),可是chrome的websocket在发送信息4次之后 ,会主动关闭链接。这里检查过不是服务器主动关闭,服务器没有异常。服务器的逻辑也很简单,当建立了handshake之后,服务器不做任何操作,仅仅接受客户端发送的信息。服务器使用了异步模型,这个和网上的代码也差不多。而且每次都是4次之后浏览器主动关闭websocket.

求助一个关于websocket的问题

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个消息回调。onOpeninit会触发WebSocket链接服务器,如果成功,WebSocket就会调用onOpen,告诉调用者,客户端到服务器的通讯链路已经成功建立,可以收发消息了。void WebSocketTestLayer::onOpen(network::WebSocket* ws){if (ws == _wsiSendText){_sendTextStatus-》setString("Send Text WS was opened.");}}onMessagenetwork::WebSocket::Data对象存储客户端接收到的数据, isBinary属性用来判断数据是二进制还是文本,len说明数据长度,bytes指向数据。void WebSocketTestLayer::onMessage(network::WebSocket* ws, const network::WebSocket::Data& data){if (!data.isBinary){_sendTextTimes++;char times = {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 = {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.")endlocal function wsSendTextMessage(strData)receiveTextTimes= receiveTextTimes + 1local strInfo= "response text msg: "..strData..", "..receiveTextTimessendTextStatus:setString(strInfo)endlocal function wsSendTextClose(strData)print("_wsiSendText websocket instance closed.")sendTextStatus = nilwsSendText = nilendlocal function wsSendTextError(strData)print("sendText Error was fired")endLua的消息注册不同于C++的继承 & Override,有单独的接口registerScriptHandler。 registerScriptHandler第一个参数是回调函数名,第二个参数是回调类型。 每一个WebSocket实例都需要绑定一次。if nil ~= wsSendText thenwsSendText:registerScriptHandler(wsSendTextOpen,cc.WEBSOCKET_OPEN)wsSendText:registerScriptHandler(wsSendTextMessage,cc.WEBSOCKET_MESSAGE)wsSendText:registerScriptHandler(wsSendTextClose,cc.WEBSOCKET_CLOSE)wsSendText:registerScriptHandler(wsSendTextError,cc.WEBSOCKET_ERROR)endsend消息Lua中发送不区分文本或二进制模式,均使用下面的接口。wsSendText:sendString("Hello WebSocket中文, I’m a text message.")主动关闭WebSocket当某个WebSocket的通讯不再使用的时候,我们必须手动关闭这个WebSocket与服务器的连接,以释放服务器和客户端的资源。close会触发cc.WEBSOCKET_CLOSE消息。wsSendText:close()在JSB中使用详细代码可参考引擎目录下的/samples/Javascript/Shared/tests/ExtensionsTest/NetworkTest/WebSocketTest.js文件。创建WebSocket对象脚本接口相对C++要简单很多,没有头文件,创建WebSocket对象使用下面的一行代码搞定。 参数是服务器地址。this._wsiSendText = new WebSocket("ws://echo.websocket.org");设置消息回调函数JSB中的回调函数是WebSocket实例的属性,使用匿名函数直接赋值给对应属性。可以看出JS语言的特性,让绑定回调函数更加优美。四个回调的含义,参考上面c++的描述。this._wsiSendText.onopen = function(evt) {self._sendTextStatus.setString("Send Text WS was opened.");};this._wsiSendText.onmessage = function(evt) {self._sendTextTimes++;var textStr = "response text msg: "+evt.data+", "+self._sendTextTimes;cc.log(textStr);self._sendTextStatus.setString(textStr);};this._wsiSendText.onerror = function(evt) {cc.log("sendText Error was fired");};this._wsiSendText.onclose = function(evt) {cc.log("_wsiSendText websocket instance closed.");self._wsiSendText = null;};send消息发送文本,无需转换,代码如下:this._wsiSendText.send("Hello WebSocket中文, I’m a text message.");发送二进制,测试代码中,使用_stringConvertToArray函数来转换string为二进制数据,模拟二进制的发送。 new Uint16Array创建一个16位无符号整数值的类型化数组,内容将初始化为0。然后,循环读取字符串的每一个字符的Unicode编码,并存入Uint16Array,最终得到一个二进制对象。_stringConvertToArray:function (strData) {if (!strData)returnnull;var arrData = new Uint16Array(strData.length);for (var i = 0; i 《 strData.length; i++) {arrData = strData.charCodeAt(i);}return arrData;},send二进制接口和send文本没有区别,区别在于传入的对象,JS内部自己知道对象是文本还是二进制数据,然后做不同的处理。var buf = "Hello WebSocket中文,\0 I’m\0 a\0 binary\0 message\0.";var binary = this._stringConvertToArray(buf);this._wsiSendBinary.send(binary.buffer);主动关闭WebSocket当某个WebSocket的通讯不再使用的时候,我们必须手动关闭这个WebSocket与服务器的连接,以释放服务器和客户端的资源。close会触发onclose消息。onExit: function() {if (this._wsiSendText)this._wsiSendText.close();}

websocket在线测试服务器(如何在WebSocket的服务器侧检测客户端的断开连接)

本文编辑:admin

更多文章:


u817中兴(中兴u817是虚拟键盘)

u817中兴(中兴u817是虚拟键盘)

本文目录中兴u817是虚拟键盘中兴u817怎么样我的手机是中兴u817,最近上网一会儿能上,一会儿又说此热点不能上网,请切换其他wifi,是什么原中兴 U817的硬件参数中兴 U817的基本参数中兴u817是虚拟键盘  是的,只要开机解锁屏

2024年6月8日 23:15

葫芦娃禁用软件app下载安装(怎么下载葫芦娃视频)

葫芦娃禁用软件app下载安装(怎么下载葫芦娃视频)

其实葫芦娃禁用软件app下载安装的问题并不复杂,但是又很多的朋友都不太了解怎么下载葫芦娃视频,因此呢,今天小编就来为大家分享葫芦娃禁用软件app下载安装的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录怎么下载葫芦

2024年7月31日 10:45

百度在线文言文翻译器(文言文现代文互翻译器)

百度在线文言文翻译器(文言文现代文互翻译器)

这篇文章给大家聊聊关于百度在线文言文翻译器,以及文言文现代文互翻译器对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录文言文现代文互翻译器在线古文言文翻译器好使的文言文翻译软件什么软件可以翻译文言文在线白话文言文翻译器白话文翻译

2024年6月29日 18:43

ce修改器中文版下载(CE修改器怎么解压成中文版步骤)

ce修改器中文版下载(CE修改器怎么解压成中文版步骤)

各位老铁们好,相信很多人对ce修改器中文版下载都不是特别的了解,因此呢,今天就来为大家分享下关于ce修改器中文版下载以及CE修改器怎么解压成中文版步骤的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录CE修改器怎么

2024年7月7日 21:40

国家正规的股票交易平台(炒股有什么推荐的平台)

国家正规的股票交易平台(炒股有什么推荐的平台)

“国家正规的股票交易平台”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看国家正规的股票交易平台(炒股有什么推荐的平台)!本文目录炒股有什么推荐的平台正规的股票平台有哪些(股票在哪个平台买比较好)股票交易平台哪个好谁知道啊正规

2024年6月25日 03:11

qq浏览器兼容模式怎么设置(qq浏览器怎么开启兼容模式)

qq浏览器兼容模式怎么设置(qq浏览器怎么开启兼容模式)

本篇文章给大家谈谈qq浏览器兼容模式怎么设置,以及qq浏览器怎么开启兼容模式对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录qq浏览器怎么开启兼容模式手机qq浏览器怎么设置兼容模式qq浏览器的兼容模式怎么设置在哪手机qq浏览器

2024年6月8日 12:35

消火栓箱安装图集(薄型单栓带消防软管卷盘消火栓箱和15s202-15的安装图)

消火栓箱安装图集(薄型单栓带消防软管卷盘消火栓箱和15s202-15的安装图)

本文目录薄型单栓带消防软管卷盘消火栓箱和15s202-15的安装图室内消火栓安装图集04s202和15s202有什么区别薄型单栓带消防软管卷盘消火栓箱和15s202-15的安装图薄型单栓带消防软管卷盘消火栓箱安装图:《中华人民共和国国家标准

2024年5月14日 19:56

抢红包赚钱软件app(抢红包软件哪个好用)

抢红包赚钱软件app(抢红包软件哪个好用)

今天给各位分享抢红包软件哪个好用的知识,其中也会对抢红包软件哪个好用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录抢红包软件哪个好用现在用的最好用的微信抢红包软件有哪些多多红包群怎么登录可以赚零花钱的小游戏抢

2024年6月9日 12:34

怎样用易语言编写12306购票软件?新版 12306怎么自动抢票

怎样用易语言编写12306购票软件?新版 12306怎么自动抢票

本文目录怎样用易语言编写12306购票软件新版 12306怎么自动抢票那里有卖收费的毫秒抢票软件春运12306出大招,能比得过抢票软件和黄牛吗易通行和北京一卡通有什么区别怎样用易语言编写12306购票软件POST是基础,对http协议需要有

2024年5月19日 13:33

u盘文件夹exe病毒专杀工具(u盘病毒专杀工具usbcleaner6.0怎么去掉U盘写保护)

u盘文件夹exe病毒专杀工具(u盘病毒专杀工具usbcleaner6.0怎么去掉U盘写保护)

本篇文章给大家谈谈u盘文件夹exe病毒专杀工具,以及u盘病毒专杀工具usbcleaner6.0怎么去掉U盘写保护对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了

2024年7月21日 09:40

国泰君安软件下载官方网站(国泰君安官方网站免费下载.)

国泰君安软件下载官方网站(国泰君安官方网站免费下载.)

本篇文章给大家谈谈国泰君安软件下载官方网站,以及国泰君安官方网站免费下载.对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录国泰君安官方网站免费下载.香港国泰君安证券下载地址是什么国泰君安官方网站下载国泰君安下载国泰君安大智慧软

2024年7月24日 15:48

杀毒软件nod32(ESET NOD32防病毒软件好还是360杀毒软件好,高手请解)

杀毒软件nod32(ESET NOD32防病毒软件好还是360杀毒软件好,高手请解)

这篇文章给大家聊聊关于杀毒软件nod32,以及ESET NOD32防病毒软件好还是360杀毒软件好,高手请解对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录ESET NOD32防病毒软件好还是360杀毒软件好,高手请解杀毒软件

2024年8月29日 02:10

过山车年龄限制多少岁?中国最高的过山车在哪

过山车年龄限制多少岁?中国最高的过山车在哪

本文目录过山车年龄限制多少岁中国最高的过山车在哪南昌融创云霄飞车最高最快吗过山车的特点坐云霄飞车有哪些危害和注意事项云霄飞车-王大文 歌词过山车英语玩过山车多少钱一次啊过山车年龄限制多少岁过山车年龄限制是60岁以上的长者不能乘坐。过山车(R

2024年7月4日 22:27

nero8刻录软件怎么用(如何使用Nero刻录软件.)

nero8刻录软件怎么用(如何使用Nero刻录软件.)

大家好,nero8刻录软件怎么用相信很多的网友都不是很明白,包括如何使用Nero刻录软件.也是一样,不过没有关系,接下来就来为大家分享关于nero8刻录软件怎么用和如何使用Nero刻录软件.的一些知识点,大家可以关注收藏,免得下次来找不到哦

2024年5月21日 02:08

星战帝国的玩家FAQ?为什么星战里帝国会造4条腿的AT-AT和两条腿的步行机不但移动速度慢,而且被打断一条腿不就直接

星战帝国的玩家FAQ?为什么星战里帝国会造4条腿的AT-AT和两条腿的步行机不但移动速度慢,而且被打断一条腿不就直接

本文目录星战帝国的玩家FAQ为什么星战里帝国会造4条腿的AT-AT和两条腿的步行机不但移动速度慢,而且被打断一条腿不就直接星战旧正史有哪些帝国军官《星战5:帝国反击战》中卢克在尤达的星球杀死他父亲是怎么回事星战帝国的玩家FAQQ:我怎么样才

2024年6月30日 04:57

颜色的战争读后感?颜色战争是什么意思

颜色的战争读后感?颜色战争是什么意思

本文目录颜色的战争读后感颜色战争是什么意思什么颜色代表战争胜利颜色的战争俄国五日战争中,北约没有出兵帮助格鲁吉亚这究竟是什么原因《书的故事》中的秘鲁牧人用什么颜色表示战争中班美文美画《颜色的战争》教案颜色的战争读后感红、蓝、黄、橙、绿、紫、

2024年3月25日 02:50

恒泰证券交易软件下载(恒泰证券开户后怎么登陆交易 如何登陆恒泰证券)

恒泰证券交易软件下载(恒泰证券开户后怎么登陆交易 如何登陆恒泰证券)

“恒泰证券交易软件下载”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看恒泰证券交易软件下载(恒泰证券开户后怎么登陆交易 如何登陆恒泰证券)!本文目录恒泰证券开户后怎么登陆交易 如何登陆恒泰证券请问恒泰证券怎么申请股票开户恒泰

2024年8月6日 23:26

怎么下载腾讯课堂里的公开课?网易公开课批量下载方法

怎么下载腾讯课堂里的公开课?网易公开课批量下载方法

本文目录怎么下载腾讯课堂里的公开课网易公开课批量下载方法手机上的网易公开课的付费课程怎么下载怎么下载腾讯课堂里的公开课1、打开腾讯课堂APP。2、根据选项卡选择自己喜欢的领域。3、选择自己喜欢并要下载的课程。4、点击进入喜欢的课程,右边有一

2023年12月22日 01:40

qq克隆音乐免费下载(qq克隆会把音乐导入吗)

qq克隆音乐免费下载(qq克隆会把音乐导入吗)

大家好,今天小编来为大家解答以下的问题,关于qq克隆音乐免费下载,qq克隆会把音乐导入吗这个很多人还不知道,现在让我们一起来看看吧!本文目录qq克隆会把音乐导入吗怎样克隆qq背景音乐空间背景音乐怎么弄啊 在那里可以下载qq空间音乐克隆器QQ

2024年5月18日 19:14

上海曼朗市场营销策划有限公司怎么样?曼朗优化能力怎么样,有合作过的朋友来说说吗

上海曼朗市场营销策划有限公司怎么样?曼朗优化能力怎么样,有合作过的朋友来说说吗

本文目录上海曼朗市场营销策划有限公司怎么样曼朗优化能力怎么样,有合作过的朋友来说说吗曼朗和耐特康赛哪家好曼朗和超快排哪个好曼朗策划怎么样,哪个产品做得好呢曼朗和有客来哪个好,有人接触过吗曼朗好不好上海曼朗市场营销策划有限公司有人了解吗,做得

2024年6月19日 13:48

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索