http与websocket

http与websocket

HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的

首先HTTP有 1.1 和 1.0 之说,也就是所谓的 keep-alive ,把多个HTTP请求合并为一个,但是 Websocket 其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已
有交集,但是并不是全部。

另外Html5是指的一系列新的API,或者说新规范,新技术。Http协议本身只有1.0和1.1,而且跟html本身没有直接关系。。通俗来说,你可以用HTTP协议传输非html数据。

Websocket是什么样的协议

Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。
Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手。

Websocket的作用

说到Websocket 你可能要借助ajax轮询来理解
AJAX 轮询
第一种是设定一个定时器,无论有无结果返回,时间一到就会继续发起请求,这种轮询耗费资源,也不一定能得到想要的数据,这样的轮询是不推荐的。
第二种轮询就是在第一次请求的时候,如果返回数据了那么就在成功的回调里面再次发起这个请求,就像递归一样,调用本方法。如果时间太久,失败了,同样的再次调用这个请求,也就是本函数。当然,长轮询也需要后台配合,没有数据改变的时候就不用返回,或者约定好逻辑。
举个栗子: 每隔几秒发送一次请求
客户端:发送请求
服务端:no
客户端:发送请求
服务端:no
客户端:发送请求
服务端:收到了 给你吧
客户端:no
······
通过这种栗子可以看出来 这种方法不是很好 比较浪费资源
HTTP有个协议状态,就是服务可能会被大量请求 如果断开请求 数据也就没有 还要发起第二次请求 所以就有了Websocket
Websocket的出现解决了以上难题
举个栗子:
客户端:建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)
服务端:接收已确认
客户端:有消息联系我
服务端:我套你猴子
服务端:我打~~
服务端:羽神天下第一
······
结论:只需要经过一次HTTP请求 就可以做到实时通信 这样也就解决了 上面耗资源以及同步的延迟
Websocket同时也可以解决服务端消耗资源的问题:我们所用的程序是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,然后再传送给相应的Handler(PHP等)来处理。
举个栗子:
A把消息传给B 需要C帮A传给B 即便B的传话速度很快 但是也会卡在C(Handler)如果C处理速度太慢 导致通信效率降低 Websocket 通信之后就可以A直接与B对话 这样也就大大的增加了效率

在传统的方式上,要不断的建立,关闭HTTP协议,由于HTTP是非状态性的,每次都要重新传输 identity info (鉴别信息),来告诉服务端你是谁。
但是Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了要反复解析HTTP协议,还要查看identity info的信息。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

臧小川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值