美文网首页工作生活
H5中为什么要有websocket

H5中为什么要有websocket

作者: 游戏程序猿 | 来源:发表于2019-07-03 15:04 被阅读0次

在线网络游戏,是最重要的游戏形式,

通过互联网,玩家可以一起联网对战,能带来很多的乐趣。

H5微信小游戏,抖音小游戏怎么样做联网对战和传统的有什么不一样的?

首先我们来看传统的联网,我们直接用TCP socket, 而H5的标准里面,我们用的是websocket,今天我们来说一说websocket 到底是什么。

TCP socket 的代价:

TCP是可靠的传输协议,这个大家都知道,怎么实现可靠的呢?

就是发送端发送一个数据包,接收端回应收到后,再发送下一个,这个是由操作系统 底层来实现的, 这种处理逻辑,会带来一个问题,验证需要代价,底层想等多一点数据,一起发过去。这样会导致我们app 连续发送2个数据包的时候,这两个数据包,底层会有可能一起发出去,接收端会一起收到这2个数据包。

那么这个时候问题来了,对于app而言希望一个一个数据包处理,可是服务端收到了2个黏在一起的数据包,服务器程序也希望收到的是一个一个数据包,

但是实际却收到2个数据包,所以我们一般的做法,是app自己给这个数据包打上标识协议,根据协议方便把2个在一起的数据包分开。

App 做数据包的标识两种方式:

(1) 数据大小size + 数据内容body + 校验;

(2) 数据内容body + 特殊的标识符号(如 );

当我们收到一个2个数据包在一起的时候,解析数据包里面的内容,

先读取第一个数据包的大小,读到数据后,根据大小可以定位下一个数据包的位置,依此类推。你使用TCP Socket ,每个里面都会有类似的协议;

H5 的websocket:

其实每次些拆包封包也挺蛮烦的,所以H5提出了一个标准解决方案,这个方法就是websocket。

(1) websocket 底层基于TCP Socket

(2) websocket 实现了4个协议(相当于自定义拆包,封包协议):

连接握手协议;

关闭协议;

发送数据协议: 包头 + 数据内容;

接收数据协议: 包头 + 数据类容;

这样得到得结果就是

客户端使用websocket 与服务器的websocket来相连接, 客户端使用 ws 来发送数据,服务器,使用websocket协议来接收,接收到的就是用户完整的数据包。自己不用实现拆包,发送数据的时候也不要使用封包了,大大的减少了用户编写网络代码的难度。

Websocket = (TCP socket + 拆包,封包的一个协议)

cocos creator学习交流群

相关文章

  • H5中为什么要有websocket

    在线网络游戏,是最重要的游戏形式, 通过互联网,玩家可以一起联网对战,能带来很多的乐趣。 H5微信小游戏,抖音小游...

  • 2020-04-03

    ## webSocket初探 ## 目录 - 为什么WebSocket - 什么是WebSocket - WebS...

  • Weex踩坑之iOS webSocket

    既然是踩坑,那就直接切入主题。 Weex官网中的webSocket,这里说iOS和h5提供 WebSockets ...

  • WebSocket

    WebSocket(1)---WebSocket介绍 一、为什么需要 WebSocket?初次接触 WebSock...

  • WebSocket小试牛刀

    WebSocket小试牛刀 一. 为什么需要WebSocket? 1.1 初次接触 WebSocket 的人,都会...

  • spring boot 实现webSocket

    一.使用H5的websocket协议 参考:https://www.cnblogs.com/bianzy/p/58...

  • websocket学习总结-发送命令处理-接收数据处理(vue环

    最近在用Vue和uniapp写websocket 中间遇到了好多问题先说说在h5中发送socket 1.Vue写的...

  • WebSocket

    本文介绍 WebSocket 协议的使用方法。 一、为什么需要 WebSocket? 初次接触 WebSocket...

  • 为什么要有HTTP协议,还要有websocket协议?

    平时我们打开网页,比如购物网站某宝。都是点一下列表商品,跳转一下网页就到了商品详情。 从HTTP协议的角度来看,就...

  • spring boot websocket

    1、对websocket的认识 2、什么是websocket 3、为什么需要websocket 答案很简单,因为 ...

网友评论

    本文标题:H5中为什么要有websocket

    本文链接:https://www.haomeiwen.com/subject/uzgqhctx.html