WebSocket 开发模拟客户端与有游戏服务器通信

WebSocket 客户端测试功能

  websocket是有标准的通信协议,在h2engine服务器引擎中继承了websocket通信协议,使用websocket通信协议的好处是很多语言或框架都内置了websocket的支持,工具也非常多,可以非常方便的测试。比如在逻辑开发过程中,有时候协议定好了,但是由于客户端还没有及时完成相应功能,那么如果有个模拟的客户端就会非常的方便,这个模拟的客户端只要能够收发协议就好。websocket浏览器天然支持,所以用浏览器websocket实现模拟客户端非常的方便,使用的人直接省掉了按照客户端的麻烦,直接放到一个webserver上,所有人都能用。

WebSocket 与服务器通信实现

  协议设计,websocket与h2engine服务器引擎通信,协议头的格式是cmd:协议号(整型)\n数据,这里参考了http头的协议设计,以\n区别协议头和协议体,协议头可以有多个参数,逗号分隔,这里只用了cmd,保留了其他协议参数的能力。用字符串的协议头对js这种脚本语言更友好,更容易兼容其他语言。

var ws = undefined; var gHost = ''; function Log(Text, MessageType) { if (MessageType == "OK") Text = "<span style='color: green;'>" + Text + "</span>"; else if (MessageType == "ERROR") Text = "<span style='color: red;'>" + Text + "</span>"; else if (MessageType == "SEND") Text = "<span style='color: orange;'>" + Text + "</span>"; document.getElementById("LogContainer").innerHTML = document.getElementById("LogContainer").innerHTML + Text + "<br />"; var LogContainer = document.getElementById("LogContainer"); LogContainer.scrollTop = LogContainer.scrollHeight; }; function btnConnect(){ if (ws){ Log("连接已经建立!!。", "ERROR"); return; } gHost = document.getElementById("ip").value + ":" + document.getElementById("port").value; Log("begin connect:"+gHost) gHost += "/chat"; if ("WebSocket" in window) { ws = new WebSocket("ws://" + gHost); } else if("MozWebSocket" in window) { ws = new MozWebSocket("ws://" + gHost); } ws.onopen = WSonOpen; ws.onmessage = WSonMessage; ws.onclose = WSonClose; ws.onerror = WSonError; } function btnClose(){ if (ws) ws.close(); } function WSonOpen() { Log("连接已经建立。", "OK"); }; function btnSend(){ var cmdReq = $('#cmdSelect').val(); var dataReq = $('#dataReq').val(); var reqMsg = 'cmd:' + cmdReq + '\n'+dataReq; ws.send(reqMsg); }

WebSocket 基于浏览器实现的模拟客户端截图

  1. ip port 设置服务器ip端口
  2. 协议号用于填写协议号,整型
  3. 协议数据这里只是作为延时只输入字符串,这个正式的应该是根据协议号显示不同的协议结构,然后根据结构字段分别填写。

相关连接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据小魔方

Excel多工作薄合并

今天要给大家介绍一下Excel多工作表合并的技巧! 由于Excel工作薄文件可以包含多个工作表,所以合并起来要比Word麻烦! 目前还无法单纯通过Excel界面...

3006
来自专栏守望轩

Visual Studio 2008 每日提示(二十六)

#251、在文件中保存扩展名的映射 原文链接:You can save your file extension mappings to a file 操作步骤...

3534
来自专栏ml

C/C++-----------http协议发送字段,文件,单个和多张图片

           关于c/c++ 网络编程,无论在linux还是windows,要说到自由性,和安全性,socket无疑是比较好的!对于socket,因为它...

1.2K8
来自专栏晓晨的专栏

Html页面雪花效果的实现

7234
来自专栏乐享123

Vim 对选中范围内容批量替换

2468
来自专栏杨逸轩 ' sBlog

如何将Pjax整合进网站,实现全站无刷新加载?

6619
来自专栏林德熙的博客

win10 uwp App-to-app communication 应用通信 发送数据文件启动

这篇文章都是乱说的,如果觉得有不好的,可以发我邮箱 本文主要讲如何让两个应用之间传输消息,也就是我们经常用的分享。我们可以使用的有剪辑版、UWP分享、Uri启动...

881
来自专栏mathor

JAVA——安装jdk与配置环境变量

1283
来自专栏玩转JavaEE

MongoDB副本集配置

上篇文章我们搭建了MongoDB副本集的环境,验证了数据已经可以成功的复制,本文我们就来看看MongoDB副本集的其他操作。 ---- 环境准备 三台服务器,地...

3235
来自专栏木头编程 - moTzxx

PHP base64 编码转化图片并进行指定路径的保存和上传处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

1581

扫码关注云+社区