【Unity】Kafka、Mqtt、Wesocket通信

1 前言

        最近研究了下kafka、mqtt、webocket插件在Unity网络通信中的应用,做下小总结吧。(不想写笔记,但不写又会忘,痛苦)

2 Kafka

        先说结果:Kafka实现失败。

        我会使用的方法是在VS里安装了Confluent.Kafka和librdkafka.redist包,然后实现了相关方法,但发现在Unity中是缺少对包中内容的引用的。

         在VS解决方案的引用中,找到引用这两个包的.dll其所处位置,然后复制到Unity的Assets/Plugins文件夹中,Unity便可以识别了,但运行时依旧会报缺失引用的错误,后来将librdkafka.redist的的.dll文件(好几个)的Inspector面板中的Load on startup属性勾选后便解决了此问题。

        但运行后依旧有问题,在消费者执行消费方法时直接无法获取消息,一直阻塞,目前原因不知。与后端的地址什么的都正确,但就是一直阻塞,也不知道是包的原因还是我与后端的原因。懒得搞了就放在这里了。

3 Mqtt

        结果:Window平台成功,WebGL平台失败。

3.1 Window

        和上面Kafka一样,先在VS下载相关包,再把相关.dll文件复制到Unity的Assets/Plugins目录下。

        然后就能正常用了。

3.2 WebGL

        首先是用的3.1的方法,打包后就连接失败,TNND(拍桌。

        然后参考了这篇文章,Unity与JS通信,让JS去进行mqtt通信。结果是不行的,还是连接失败,修改js文件中的地址细节也不行。后来查了半天发现了一些端倪,似乎要服务器那边安装一些相关的jar包才可以。但懒得搞了,就放这了。

4 Websocket插件

        结果:Window、WebGL平台成功。

        Window没啥说的,安装后就能用,只说WebGL的情况。两个插件:BestHttp、NativeWebSocket。

4.1 BestHttp

        网上都在说这插件好厉害,但其因版本造成的问题也很厉害。我用的是Unity2022.3.0,首先找个一个v2.0.5版本的插件,然后运行报错。寻找了相关解决方案:地址,发现没用。那应该就是版本问题了,更换了一个v3.11.0版本,运行依旧报错,按上面的解决方案再次调整,运行成功。总之,换了高版本,并添加了一些内容才成功运行,但你以为到这里就结束了吗?

        运行是成功,但运行时发现绑定的监听函数,如OnMessage这些全都执行报错。在运行WebGL打包项目时,在Web端按F12就可以从控制台看到相关报错信息了。最后在这里找到了解决方案:地址

        根据其所说,是有些方法不支持的原因,按照图中所示进行替换即可将。我们可以在打包文件的Build目录下找到 项目名.framework.js 文件(同目录还有个 项目名.loader.js,报错代码基本就在这两个文件里,根据报错内容在这两个文件里找,我是在framework那个文件中找到了。),在里进行替换,直接Ctrl+F搜索找,所有Runtime.dynCall(xxxxx)都要替换,但修改此文件只能解一时的问题,以后每次打包就要重新修改,所以我们也可以在编辑器项目中修改。具体为“导入的插件文件夹/Plugins/WebGL/”下的BestHTTP_WebSocket.jslib文件(同样的,同目录也有其他文件,如果报错内容是在其他文件内,则应修改其他文件,通常需要自己打开文件然后Ctrl+F自己去搜索报错内容是否在此文件内。),对文件中的函数进行替换,然后重新打包即可。运行成功,函数执行成功,可喜可贺。

        另外,我这边还报了一个转String函数过时的错误,并告诉了我应该改用什么函数,与上面同理,找到原函数进行替换即可。

4.2 NativeWebSocket

        插件:地址

        在Unity包管理那里输入网页里提供的URL就可以下载了,下载完,实例代码一粘,一运行,WebGL成功通信。真好。

5 后记

        这可是我端午假期加班写的笔记,给我满怀感恩之情好好看啊。

相关推荐

  1. Socket通信

    2024-06-09 13:12:02       66 阅读
  2. linux通信

    2024-06-09 13:12:02       51 阅读
  3. Netlink通信

    2024-06-09 13:12:02       50 阅读
  4. SPI<span style='color:red;'>通信</span>

    SPI通信

    2024-06-09 13:12:02      54 阅读
  5. TCP<span style='color:red;'>通信</span>

    TCP通信

    2024-06-09 13:12:02      30 阅读
  6. 计算机通信

    2024-06-09 13:12:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 13:12:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 13:12:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 13:12:02       87 阅读
  4. Python语言-面向对象

    2024-06-09 13:12:02       97 阅读

热门阅读

  1. FPGA复位:(41)复位管脚PR报错?

    2024-06-09 13:12:02       28 阅读
  2. 逆运动学IK原理举例说明

    2024-06-09 13:12:02       38 阅读
  3. 浅谈单臂路由

    2024-06-09 13:12:02       35 阅读
  4. Vue基础篇--table的封装

    2024-06-09 13:12:02       26 阅读
  5. 数据结构——哈希表

    2024-06-09 13:12:02       32 阅读
  6. U9C的数据查询视图Sql

    2024-06-09 13:12:02       28 阅读
  7. kotlin gradle踩过的坑

    2024-06-09 13:12:02       46 阅读
  8. 关于xilinx srio ip复位问题

    2024-06-09 13:12:02       37 阅读
  9. Elasticsearch高效检索:基础查询详解

    2024-06-09 13:12:02       33 阅读
  10. MySQL入门学习-聚合和分组.计数(COUNT()函数)

    2024-06-09 13:12:02       31 阅读
  11. ch1计算机网络和因特网

    2024-06-09 13:12:02       38 阅读
  12. bpmn+vue 中文文档

    2024-06-09 13:12:02       50 阅读
  13. 大语言模型原理基础与前沿 为什么ICL有效

    2024-06-09 13:12:02       41 阅读