今天介绍一下如何在Unity3D下使用WebSocket。
首先介绍一下什么是websocket,以及与socket,和http的区别与联系,然后介绍一下websocket的一些开源的项目。

WebSocket是什么

WebSocket协议是为了实现网络客户端和服务器端全双工通信而引入的一种基于消息帧和TCP的通信机制,这个协议本身的目标是为了在http服务器上引入双向通信的机制,从而克服http单向通信的缺陷(http设计的初衷就不是为了双向通信),其可以在复用http的端口,支持http的代理,认证等,虽然如此,websocket可以独立于http存在。 详细的内容可以参考RFC6455(https://datatracker.ietf.org/doc/rfc6455/)里面有详细的介绍。

那么WebSocket与http,socket有什么区别和联系呢。

  • WebSocket和http
    其实从历史上来讲,websocket是为了克服http无法双向通信而引入的,在通常的使用中,可以复用http的端口与功能,除此外,他们没有其他的联系,而是完全是独立的协议,通常情况下,http是单向的web 服务,而websocket是全双工的,服务器和客户端可以实时的传输信息,在引用时他们可以在http服务器上同时部署,特别是在NodeJs中。
  • WebSocket与Socket
    那么websocket和socket是什么关系呢? 其实可以理解为websocket是在socket的基础上实现的,其基于消息帧和TCP协议,而socket更通用,在编程中,可以选在tcp,udp,也需要自己控制数据流格式,每次的数据的长度都需要自己控制与读取。

Unity3d下如何使用WebSocket

现在越来越多的Unity3d游戏需要使用websocket或者后台的服务,在实际中,NodeJs,SocketIO越来越多的作为后台的服务加以应用,那么在unity3d的前端上可以使用的开源的websocket有两种:

  • UnitySocketIO
    可以参考https://github.com/kaistseo/UnitySocketIO-WebSocketSharp ,其完全是C# dll的方式Unity3d中使用,测试了在windows和Linux下使用完全没有问题。分析一下优缺点:
    优点: 直接使用dll,无unity3d的依赖,代码比较好测试,支持多种消息类型,如文本,Json等。
    缺点:需要依赖第三方的库,如SuperSocket,SimpleJson等,在iOS下需要单独维护。

  • Socket.IO for unity
    unity3d 的Asset store上有一个免费的开源项目 Socket.IO for unity (https://www.assetstore.unity3d.com/en/#!/content/21721)可以使用。测试了windows和linux版本,没有问题。 其他的andriod和ios应该也没有问题,根据代码和文档。
    优点: 代码直接嵌入到Unity3d中,有所有的源代码,支持Json的消息传输。
    缺点: 写测试用例相对繁琐,Json消息简单,不支持对象的Json解析,不过这块应该可以重写。http://blog.csdn.net/leoleocs/article/details/48824921

Unity3d 下websocket的使用相关推荐

  1. 腾讯开源手游热更新方案,Unity3D下的Lua编程

    写在前面 \\ xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能.易用性.扩展性而广受好评.现在,腾讯已经将xLua开源到GitHub. ...

  2. Android平台实现Unity3D下RTMP推送

    像Unity3D下的RTMP或RTSP播放器一样,好多开发者苦于在Unity环境下,如何高效率低延迟的把数据采集并编码实时推送到流媒体服务器,实现Unity场景下的低延迟推拉流方案. 关于屏幕采集,有 ...

  3. Windows平台Unity3d下如何同时播放多路RTSP或RTMP流

    好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...

  4. Windows平台下如何实现Unity3D下的RTMP推送

    好多开发者苦于很难在unity3d下实现RTMP直播推送,本次以大牛直播SDK(Github)的Windows平台RTMP推送模块(以推摄像头为例,如需推屏幕数据,设置相关参数即可)为例,介绍下uni ...

  5. 手游热更新方案xLua开源:Unity3D下Lua编程解决方案

    转载:https://mp.weixin.qq.com/s/2bY7A6ihK9IMcA0bOFyB-Q 导语 xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾 ...

  6. 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2bY7A6ihK9IMcA0bOFyB-Q 导语 xL ...

  7. 3dmax导出到unity3d下分割动画

    1.在3dmax  导出时候,要导出FBX文件,同时包含动画,骨骼,皮肤等内容 2.把FBX文件导入到Unity3d后会默认有一个超长的大动画,就是一个整体的动画,如图Take001,这个时候要分割哪 ...

  8. Unity3D下Linux平台播放RTSP或RTMP流

    背景 尽管Windows平台有诸多优势,Linux平台的发展还是势不可挡,特别实在传统行业,然而Linux生态构建,总是差点意思,特别是有些常用的组件,本文基于已有的Linux平台RTSP.RTMP播 ...

  9. Tomcat下WebSocket最大连接数测试

    默认情况下,Tomcat的WebSocket最大连接数为200. WebSocket后台代码 package com.chat.demo;/** Licensed to the Apache Soft ...

最新文章

  1. centos7.x安装图形化界面
  2. 漫画 | 在中国,程序媛到底有多难?
  3. [Linux Mysql] Linux下Mysql的基本操作
  4. 网络摄象机常用传输协议
  5. .NET Core下使用gRpc公开服务(SSL/TLS)
  6. python中属性是什么意思啊_python中的“对象属性”和一般属性是什么?
  7. Selenium驱动Firefox浏览器
  8. 2021中国WMS市场发展趋势和特点
  9. atmega168p与328p_与Arduino“本是同根”——Atmel ATmega328P-XMINI开发板评测
  10. 移动机顶盒migu-jt-u1 unt400c刷机 hi3798 root
  11. 基于vue的电商后台管理系统
  12. python中while循环只能用来实现无限循环的编程_while循环只能实现无限循环的编程...
  13. What You Must Know To Build Savvy Push Notifications(推送策略)
  14. Socks代理是什么意思?有什么用?
  15. php获取股市交易日,个股交易日一年多少天?股市交易时间规定
  16. Larave 利用smtp.office365.com发送邮件遇到问题
  17. 【数论】 排列组合中的隔板问题
  18. 安装集成开发工具包XAMPP
  19. 中小企业OA管理系统+群晖NAS私化部署
  20. pycharm设置默认script,诸如创建人,创建时间等

热门文章

  1. 解决java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
  2. Java高级工程师学习路径
  3. QT教程1:ubuntu18.04安装QT5
  4. 语音识别2:CTC对齐的算法
  5. 父爱动画代码python_pygame用blit()实现动画效果的示例代码
  6. python互相转换位置坐标(百度坐标、WGS_84、火星坐标)
  7. android组合动画还原,Android - Fragment,View动画,组合动画,属性动画
  8. vue2.0 通过ip访问自己运行的项目
  9. caffe windows 学习第一步:编译和安装(vs2012+win 64)
  10. java并发编程--Executor框架