cocos + KBEngine 微信小游戏 - 兼容wss通讯方式

2024-01-21 08:48

本文主要是介绍cocos + KBEngine 微信小游戏 - 兼容wss通讯方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信小游戏的域名只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议;所以我们的服务器打算使用nginx反向代理https/wss。

准备

准备好域名,并且经过ICP备案

配置管理后台

在小游戏后台设置服务器的socket合法域名,把我们与服务器通讯的地址加进去
注意:域名必须经过 ICP 备案;

配置服务器

1.首先申请Https证书,阿里云有免费的可以先购买使用(域名类型:单域名; 证书类型:dv ssl; 加密等级:免费版)
2.拿到证书后绑定我们之前准备好的域名
3.选择nginx证书下载,可以对证书重命名后准备使用
4.服务器安装nginx
5.打开nginx的配置文件 nginx.conf,找到443所在的server块进行配置

	# 新增login_addr块upstream login_addr {server 127.0.0.1:20013 weight=1;}server {listen       443 ssl http2 default_server;listen       [::]:443 ssl http2 default_server;server_name  xxxx;     # 这里配置你的域名root         /usr/share/nginx/html;# 把你下载的证书上传到服务器,并且指定路径ssl_certificate "/etc/nginx/ssl/server.crt";		# 根据你的证书路径设置ssl_certificate_key "/etc/nginx/ssl/server.key";	# 根据你的证书路径设置ssl_session_cache shared:SSL:1m;ssl_session_timeout  10m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}# 设计思想:nginx对我们来说只是一个转发的功能,但为了对登录做一个负载均衡,# 所以决定把与login的通讯和base的通讯区分开,给出的方案是修改客户端登录的连接信息# 通过请求信息来决定如何转发# 服务器对应的配置就有了下面俩个块 /loginapp 和 /baseapplocation /loginapp {# 指定我们上面定义的地址,摘出来的目的是为了负载均衡proxy_pass http://login_addr;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";}# 由于KBEngine的baseapp本身就是负载均衡的,所以对baseapp,主需要原样转发即可# 我目前只使用了一台机器,所以这里转发的地址是 127.0.0.1location /baseapp {proxy_pass http://127.0.0.1:$arg_port;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";}}

6.重启nginx

客户端适配

1.修改客户端js插件

	// 修改 getServerAddr 函数// 修改的结果是如果不启动wss连接,地址保持不变// 如果启动wss连接,连接请求地址将被改成下面形式// wss://域名/loginapp?port=20013// wss://域名/baseapp?port=20013 // 也就是我们设置nginx时新增的那俩个块形式this.getServerAddr = function(ip, port, app){var serverAddr = KBEngine.app.protocol + ip;if(KBEngine.app.isWss) {serverAddr += '/'+ app + '?port=' + port;}else if(port != ""){serverAddr += ":" + port;}return serverAddr;}// 接下来修改 getServerAddr 调用的地方,添加第三个参数// 该参数使用 KBEngine.app.currconnect将要被赋值的值// 示例如下:this.login_loginapp = function(noconnect){  if(noconnect){var serverAddr = this.getServerAddr(KBEngine.app.ip, KBEngine.app.port, "loginapp");KBEngine.INFO_MSG("KBEngineApp::login_loginapp: start connect to " + serverAddr + "!");KBEngine.app.currconnect = "loginapp";	}}

2.客户端在初始化KBEngine时 设置使用wss连接

启动服务器,客户端连接测试!

这篇关于cocos + KBEngine 微信小游戏 - 兼容wss通讯方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/628980

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给