【Unity】Kafka、Mqtt、Wesocket通信

news2025/1/20 14:50:21

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 后记

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1801612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

压缩大文件消耗电脑CPU资源达到33%以上

今天用7-Zip压缩一个大文件,文件大小是9G多,这时能听到电脑风扇声音,查看了一下电脑资源使用情况,确实增加了不少。 下面是两张图片,图片上有电脑资源使用数据。

05--Git分布式版本控制系统

前言:给后端工程师使用的版本控制器,本质上类似带时间标记的ftp,使用比较简单,就在这里归纳出来,供参考学习。 git1、概念简介 分布式版本控制系统(Distributed Version Control System,DVCS&…

数据挖掘--分类

数据挖掘--引论 数据挖掘--认识数据 数据挖掘--数据预处理 数据挖掘--数据仓库与联机分析处理 数据挖掘--挖掘频繁模式、关联和相关性:基本概念和方法 数据挖掘--分类 数据挖掘--聚类分析:基本概念和方法 基本概念 决策树归纳 决策树:决策树是一…

从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(四)

上一章节我们了解了 shuffle 相关的概念和原理后其实可以发现一个问题,那就是 shuffle 比较容易造成数据倾斜的情况。 例如上一节我们看到的图,在这批数据中,hello 这个单词的行占据了绝大部分,当我们执行 groupByKey 的时候触发了…

关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版)

主要最近做了一个要用STM32实现读取鼠标键盘一体的那种USB设备,STM32的界面上要和电脑一样的能通过这个USB接口实现鼠标移动,键盘的按键。然后我就很自然的去参考了正点原子的例程,可是找了一圈,发现正点原子好像用的库函数&#…

Docker的资源限制

文章目录 一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score 二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参…

如何在 iPhone 上恢复已删除的短信

本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中,选择“过滤器”…

重塑楼宇管理:智慧管控可视化开启高效新篇章

借助图扑智慧楼宇管控可视化技术,实现实时监控与智能化管理,快速响应潜在问题,确保楼宇安全、节能和高效运行。

Qt/C++音视频开发76-获取本地有哪些摄像头名称/ffmpeg内置函数方式

一、前言 上一篇文章是写的用Qt的内置函数方式获取本地摄像头名称集合,但是有几个缺点,比如要求Qt5,或者至少要求安装了多媒体组件multimedia,如果没有安装呢,或者安装的是个空的呢,比如很多嵌入式板子&am…

[图解]建模相关的基础知识-05

1 00:00:01,510 --> 00:00:03,900 练习,我们就出这一道就行了 2 00:00:04,230 --> 00:00:07,210 这些都是像数理逻辑 3 00:00:08,140 --> 00:00:10,570 包括信息专业的 4 00:00:11,350 --> 00:00:12,900 包括文科的 5 00:00:12,910 --> 00:00:14…

论文高级图表绘制(Python语言,局部放大图)

本文将通过一个具体的示例,展示如何使用Python语言和Matplotlib库来绘制高级图表,包括局部放大图的制作。适用于多条曲线绘制在同一个图表中,但由于数据量过大,导致曲线的细节看不清,需要对细节进行局部放大。如下图: 环境准备 首先,确保你的Python环境中已经安装了以…

mqtt-emqx:keepAlive机制测试

mqtt keepAlive原理详见【https://www.emqx.com/zh/blog/mqtt-keep-alive】 # 下面开始写测试代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2…

数据结构(C语言)之对归并排序的介绍与理解

目录 一归并排序介绍&#xff1a; 二归并排序递归版本&#xff1a; 2.1递归思路&#xff1a; 2.2递归代码实现&#xff1a; 三归并排序非递归版本&#xff1a; 3.1非递归思路&#xff1a; 3.2非递归代码实现&#xff1a; 四归并排序性能分析&#xff1a; 欢迎大佬&#…

day40--Redis(二)实战篇

实战篇Redis 开篇导读 亲爱的小伙伴们大家好&#xff0c;马上咱们就开始实战篇的内容了&#xff0c;相信通过本章的学习&#xff0c;小伙伴们就能理解各种redis的使用啦&#xff0c;接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信登录 这一块我们会使用redis共…

碳素钢化学成分分析 螺纹钢材质鉴定 钢材维氏硬度检测

碳素钢的品种主要有圆钢、扁钢、方钢等。经冷、热加工后钢材的表面不得有裂缝、结疤、夹杂、折叠和发纹等缺陷。尺寸和允许公差必须符合相应品种国家标准的要求。 具体分类、按化学成分分类 &#xff1a; 碳素钢按化学成分&#xff08;即以含碳量&#xff09;可分为低碳钢、中…

问题:军保卡不允许开立附属卡,不能开展境外交易,不开通云闪付工功能() #其他#经验分享

问题&#xff1a;军保卡不允许开立附属卡&#xff0c;不能开展境外交易&#xff0c;不开通云闪付工功能&#xff08;&#xff09; A&#xff0e;A&#xff1a;正确 B&#xff0e;B&#xff1a;错误 参考答案如图所示

在线渲染3d怎么用?3d快速渲染步骤设置

在线渲染3D模型是一种高效的技术&#xff0c;它允许艺术家和设计师通过互联网访问远程服务器的强大计算能力&#xff0c;从而加速渲染过程。无论是复杂的场景还是高质量的视觉效果&#xff0c;在线渲染服务都能帮助您节省宝贵的时间。 在线渲染3D一般选择的是&#xff1a;云渲染…

React的useState的基础使用

import {useState} from react // 1.调用useState添加状态变量 // count 是新增的状态变量 // setCount 修改状态变量的方法 // 2.添加点击事件回调 // userState实现计数实例import {useState} from react// 使用组件 function App() {// 1.调用useState添加状态变量// coun…

Python下载库

注&#xff1a;本文一律使用windows讲解。 一、使用cmd下载 先用快捷键win R打开"运行"窗口&#xff0c;如下图。 在输入框中输入cmd并按回车Enter或点确定键&#xff0c;随后会出现这个画面&#xff1a; 输入pip install 你想下载的库名&#xff0c;并按回车&…

使用MATLAB的BP神经网络进行数据分类任务(简单版)

BP神经网络&#xff0c;即反向传播&#xff08;Backpropagation&#xff09;神经网络&#xff0c;是一种多层前馈神经网络&#xff0c;它通过反向传播算法来更新网络权重。这种网络结构特别适合于分类和回归任务。 MATLAB环境设置 在开始之前&#xff0c;请确保MATLAB环境已经…