【Unity】在Unity下使用websocket的一些经验

这篇具有很好参考价值的文章主要介绍了【Unity】在Unity下使用websocket的一些经验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先,先上大家都知道的简介,这一版是我认为比较清晰的。。。虽然在度娘的教导和知乎的教导下,总算认识了websocket,但这个过程比较艰辛,给大家发出来看一下:

---------------------------------------------------------------------------------------------------------------------------------

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。

WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范。

一、WebSocket简介

webSocket是什么:

1、WebSocket是一种在单个TCP连接上进行全双工通信的协议

2、WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据

3、在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输

4、需要安装第三方包:cmd中:go get -u -v github.com/gorilla/websocket(我这里使用的是WebSocketSharp库,一个很简单的dll文件)

WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输。但它跟 HTTP 没什么关系,它是一种基于 TCP 的一种独立实现。

以前客户端想知道服务端的处理进度,要不停地使用 Ajax 进行轮询,让浏览器隔个几秒就向服务器发一次请求,这对服务器压力较高。另外一种轮询就是采用 long poll 的方式,这就跟打电话差不多,没收到消息就一直不挂电话,也就是说,客户端发起连接后,如果没消息,就一直不返回 Response 给客户端,连接阶段一直是阻塞的。

而 WebSocket 解决了 HTTP 的这几个难题。首先,当服务器完成协议升级后( HTTP -> WebSocket ),服务端可以主动推送信息给客户端,解决了轮询造成的同步延迟问题。由于 WebSocket 只需要一次 HTTP 握手,服务端就能一直与客户端保持通讯,直到关闭连接,这样就解决了服务器需要反复解析 HTTP 协议,减少了资源的开销。

WebSocket协议支持(在受控环境中运行不受信任的代码的)客户端与(选择加入该代码的通信的)远程主机之间进行全双工通信。用于此的安全模型是Web浏览器常用的基于原始的安全模式。 协议包括一个开放的握手以及随后的TCP层上的消息帧。 该技术的目标是为基于浏览器的、需要和服务器进行双向通信的(服务器不能依赖于打开多个HTTP连接(例如,使用XMLHttpRequest或和长轮询))应用程序提供一种通信机制。

【Unity】在Unity下使用websocket的一些经验

websocket 是一个基于应用层的网络协议,建立在tcp 协议之上,和 http 协议可以说是兄弟的关系,但是这个兄弟有点依赖 http ,为什么这么说呢?我们都知道 HTTP 实现了三次握手来建立通信连接,实际上 websocket 的创始人很聪明,他不想重复的去造轮子,反正我兄弟已经实现了握手了,我干嘛还要重写一套呢?先让它去冲锋陷阵呢,我坐收渔翁之利不是更香 吗,所以一般来说,我们会先用 HTTP 先进行三次握手,再向服务器请求升级为websocket 协议,这就好比说,嘿兄弟你先去给我排个队占个坑位建个小房子,到时候我在把这房子改造成摩天大楼。而且一般来说 80 和 443 端口一般 web 服务端都会外放出去,这样可以有效的避免防火墙的限制。当然,你创建的 websocket 服务端进程的端口也需要外放出去。

很多人会想问,web开发 使用 HTTP 协议不是已经差不多够用了吗?为什么还要我再多学一种呢?这不是搞事情嘛,仔细想想,一门新技术的产生必然有原因的,如果没有需求,我们干嘛那么蛋疼去写那么多东西,就是因为 HTTP 这个协议有些业务需求支持太过于鸡肋了,从 HTTP 0.9 到现在的 HTTP3.0 ,HTTP协议可以说说是在普通的web开发领域已经是十分完善且高效的了,说这个协议养活了全球半数的公司也不为过吧,像 2.0 服务器推送技术,3.0 采用了 UDP 而放弃了原来的 TCP ,这些改动都是为了进一步提升协议的性能,然而大家现在还是基本使用的 HTTP 1.1 这个最为经典的协议, 也是让开发者挺尴尬的。

绝大多数的web开发都是应用层开发者,大多数都是基于已有的应用层去开发应用,可以说我们最熟悉、日常打交道最多的就是应用层协议了,底下 TCP/IP 协议我们基本很少会去处理,当然大厂可能就不一样了,自己弄一套协议也是正常的,这大概也是程序员和码农的区别吧,搬砖还是创新,差别还是很大的。网络这种分层协议的好处我在之前的文章也说过了,这种隔离性很方便就可以让我们基于原来的基础去拓展,具有较好的兼容性。

总的来说,它就是一种依赖HTTP协议的,支持全双工通信的一种应用层网络协议。

二、WebSocket产生背景

简单的说,WebSocket协议之前,双工通信是通过多个http链接来实现,这导致了效率低下。WebSocket解决了这个问题。下面是标准RFC6455中的产生背景概述。

长久以来, 创建实现客户端和用户端之间双工通讯的web app都会造成HTTP轮询的滥用: 客户端向主机不断发送不同的HTTP呼叫来进行询问。

这会导致一系列的问题:

  • 1.服务器被迫为每个客户端使用许多不同的底层TCP连接:一个用于向客户端发送信息,其它用于接收每个传入消息。
  • 2.有些协议有很高的开销,每一个客户端和服务器之间都有HTTP头。
  • 3.客户端脚本被迫维护从传出连接到传入连接的映射来追踪回复。

一个更简单的解决方案是使用单个TCP连接双向通信。 这就是WebSocket协议所提供的功能。 结合WebSocket API ,WebSocket协议提供了一个用来替代HTTP轮询实现网页到远程主机的双向通信的方法。

WebSocket协议被设计来取代用HTTP作为传输层的双向通讯技术,这些技术只能牺牲效率和可依赖性其中一方来提高另一方,因为HTTP最初的目的不是为了双向通讯。

三、WebSocket实现原理

在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:

1. Header:互相沟通的Header是很小的-大概只有 2 Bytes。

2. Server Push:服务器的推送,服务器不再被动的接收到浏览器的请求之后才返回数据,而是在有新数据时就主动推送给浏览器。

---------------------------------------------------------------------------------------------------------------------------------

话说,为什么会用到websocket呢,因为我接手的项目用到的就是这个,让以前习惯用socket的我很不习惯。但是看了那么多有关websocket的内容,最后发现,真香。。。。。

流程可控的程度再次拔高一个台阶,因为是全双工的,所以,,,你懂的。。。

简单说一下优势:

1、方便了很多,因为是双向的,所以很多内容可控了。

2、支持webgl比较好。

目前我的认为是这两个,有大佬可以补充一下,不喜勿喷。

里面主要的几个方法如下:

WebSocket ws = new WebSocket(Url)

【Unity】在Unity下使用websocket的一些经验

这几个是最常用的,其他的暂时没用到,后续再继续补充哈

 文章来源地址https://www.toymoban.com/news/detail-496440.html

到了这里,关于【Unity】在Unity下使用websocket的一些经验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • automa插件使用的一些实战经验2

    automa的工程还是要经常导出备份,因为经常出现突然模块消失的情况。 1 滑动分页条件区分 传统的页面都是有分页标签,这样你很容易知道,应该用分页来做。但是现在手机端的应用基本都是上滑就可以分页,再混合式开发的环境下,公司为了节省成本,大部分都可以实现一

    2024年02月02日
    浏览(155)
  • 使用K8s的一些经验和体会

    Java应用程序的奇怪案例 ​在微服务和容器化方面,工程师倾向于避免使用 Java,这主要是由于 Java 臭名昭著的内存管理。但是,现在情况发生了改变,过去几年来 Java 的容器兼容性得到了改善。毕竟,大量的系统(例如Apache Kafka和Elasticsearch)在 Java 上运行。 ​回顾 2017-18 年

    2024年02月12日
    浏览(35)
  • 使用es必须要知道的一些知识点:索引篇

    在当今数据驱动的世界中,Elasticsearch(简称ES)成为了一个强大而广泛应用的搜索和分析引擎。ES提供了快速、可扩展且高度可靠的数据存储和检索解决方案。然而,要真正掌握ES的各种功能和最佳实践,需要通过实践才能获得真正的知识。 在Elasticsearch(ES)中,index操作和

    2024年02月08日
    浏览(43)
  • 大家知道ai绘画古风软件有哪些吗?

    现在,越来越多的人开始关注人工智能在艺术领域的应用,特别是在绘画领域。人工智能的应用不仅可以提高画作的效率,还能够提供高质量的创作体验。在古风绘画领域,ai绘画软件已经成为了越来越多艺术家和爱好者不可或缺的创作方式。这些软件不仅可以让我们快速、

    2024年02月11日
    浏览(54)
  • 大家想知道ai写作宝怎么样吗?

    ai写作是指利用人工智能技术自动生成文章、报告、新闻等文本内容的过程。它可以实现大规模、高效率、低成本的文本创作,免去人工编写的繁琐过程,节约了很多时间和精力。目前在文学创作、新闻报道、广告文案、社交媒体内容创作等方面,ai写作都得到了广泛应用。那

    2024年02月12日
    浏览(36)
  • 使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录

    RabbitMQ 是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验。 成熟,稳定 消息持久化 灵活的消息路由 高性能,高可用性,可扩展性高 支持插件系统:RabbitMQ 具有丰富的插件系统,可以通

    2024年02月06日
    浏览(42)
  • 【想要安利给所有人的开发工具】最强工具ChatGPT——分享一些使用经验

    目录 🔥个人使用ChatGPT的经验 🔥如何使用ChatGPT  方法一 方法二 🔥🔥提问技巧分享  1、英语翻译员 2、面试官 3、javascript 控制台 4、Excel表格 5、作曲家 6、辩手 7、小说家 8、诗人 9、数学老师 10、网络安全专家 11、医生 12、统计员 13、占星师 14、机器学习工程师 15、R编程

    2024年01月20日
    浏览(52)
  • 迟到的秋招经验分享贴,希望能帮到大家

          由于毕业之前各种各样的事情,去年的秋招经验一直没有整理分享,现在趁周末尽可能多的将之前的资料整理一下,方便各位找工作的师弟师妹们参考,也算将自己的一点点经验分享给大家,希望能帮到大家。 (1) 一定要学会抱团取暖 。       各位同学身边肯定

    2023年04月08日
    浏览(49)
  • 程序员自学Python,走过不少弯路,给大家一点经验建议

    前言 : 首先感谢刚到csdn后各位读者对民叔的支持,尽管大家看完文章后没有 一键三连 让民叔有一点点的气馁 ,但是民叔会不断的学习,给大家带来更多的经验和学习建议,可以一起学习,共同进步。 Python的发展史是一部典型的励志大片。自1989年诞生以来,从名不见经传

    2024年02月02日
    浏览(44)
  • 微软官宣裁员 10000 人。分享一些我的建议给大家

    大家好!我是韩老师。 昨天,西雅图双雄经历着不眠之夜。 早些时间,就有传言说 1 月 18 日,亚马逊会裁员 18000 人。微软要裁员的各种消息也是满天飞。 北京时间昨天晚上,微软官方博客发了一篇标题为 Focusing on our short- and long-term opportunity 的文章。 其中,提及了裁员的

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包