UnityWebGL使用Mirror进行多人在线遇到的问题

作者分享了在Unity中使用Mirror进行WebGL网络同步时遇到的挑战,包括WebSocket与Socket通信问题、HTTPS与WSS设置、以及SSL部署。通过解决这些问题,作者最终实现了在公网环境下的成功同步。
摘要由CSDN通过智能技术生成

我正在解决Unity中WebGL使用Mirror进行网络同步的工作,期间遇到了很多坑…记录一下

快速开始Mirror
按照正常的逻辑,按照教程部署服务端和客户端,局域网下一切都很OK。当我开开心心的绑定好控制器摇杆和人物动画后部署到公网环境。噩梦开始了。。。

首先说明一下我的服务器配置和客户端配置
服务器是一个Win11的测试服务器,通过Natapp暴露公网IP ,客户机是部署到阿里云的https服务器(注意这个HTTPS是大坑)
第一次碰壁
打包到服务器上后报错
SocketException: Success
at System.Net.Sockets.Socket…ctor (System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType) [0x00000] in <00000000000000000000000000000000>:0
然后翻看了Mirror的文档,发现Web中只能使用WebSocket进行通信,找到了这个资源
SimpleWebTransport
然后替换自带的Trans,就会强制以Socet进行通信了

第二次碰壁:
当部署到https服务器上后,无法创建角色。仍然直接报错。
at System.Net.Sockets.Socket…ctor (System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType) [0x00000] in <00000000000000000000000000000000>:0
经过各种查证,发现是https服务器似乎没有开启wss通信。触碰了安全机制直接被杀死
在本地是完全OK的,所以我猜测是https服务器的问题,解决方式是在Unity的Mirror设置中开启WSS
在这里插入图片描述

第三次碰壁
部署好WSS后,发现ping不上websocket,提示握手失败什么的。大概了解了一下机制。应该是服务端没有部署SSL的锅。
于是我在阿里云申请了一个子域名,申请了一个免费证书。并将pfx文件导入后用JSON指认(客户端不需要证书哈,因为客户端本身就在HTTPS服务器下)。
在这里插入图片描述

在这里插入图片描述

成功~~~
在这里插入图片描述在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值