从HTTP 到 websocket

HTTP和WebSocket协议的区别与联系 那天和boss聊天,不经意间提到了Meteor,然后聊到了WebSocket,然后就有了以下对话,不得不说,看问题的方式不同,看到的东西也会大不相同。 A:Meteor是一个很新的开发框架,我觉得它设计得十分巧妙。 B:怎么个巧妙之处? A:它的前后端全部使用JS,做到了真正的前后端统一;前端浏览器里存有一份后台开放出来的数据库的拷贝,快;使用WebSocket协议来做数据传输协议,来同步前后端的... 阅读详情
1、HTTP协议对长连接的支持以及各浏览器的支持情况
http://blog.youkuaiyun.com/fenglibing/article/details/7100222


2、WEB客户端与服务端信息交互的几种方式

1)、Flash XMLSocket
入门示例: http://en.wikipedia.org/wiki/XMLSocket
不足:
a)、客户端必须安装 Flash 播放器;
b)、因为 XMLSocket 没有 HTTP 隧道功能,XMLSocket 类不能自动穿过防火墙;

c)、因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非 HTTP 通道端口进行限制;


2)、Java Applet 套接口
不足:
a)、需要安装Java的插件;
b)、有些浏览器运行于如Apple iOS、Android等是不支持Applet的;
c)、软件插件的安装可能会受制于当前用户的系统权限;
d)、受安全限制不能够正常运行;
e)、如果运行的Applet需要安装新的JRE,那么此时用户在看到Applet展示的时候会有等待的过程,这个可能会因为网络或者代理导致失败,使用户不能够正常使用该功能;
f)、Applet标签,必须要是支持跨浏览器的;

详见:http://en.wikipedia.org/wiki/Java_applet#Disadvantages


3)、Comet

a)、基于 AJAX 的长轮询(long-polling)方式

示例图:


存在问题就是IE不支持ajax的readystate状态为3的时候读取数据,IE只有在AJAX的readystate请求状态为4的时候才能够读取服务端返回的数据;FF支持;

b)、基于 Iframe 及 htmlfile 的流(streaming)方式

示例图:


使用“htmlfile“的 ActiveX 组件,解决IE的加载显示问题;

浏览器兼容性比较好,Google Talk是基于这种方式实现的;

还是存在从客户端往服务端发消息时,需要提交新的请求;


4)、HTML5中的WebSocket


1)~3)详细参见: https://www.ibm.com/developerworks/cn/web/wa-lo-comet


3、WebSocket

1)、WebSocket介绍
HTML5 Web Sockets规范定义了Web Sockets API,支持页面使用Web Socket协议与远程主机进行全双工的通信。它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作。HTML5 Web Sockets以最小的开销高效地提供了Web连接。相较于经常需要使用推送实时数据到客户端甚至通过维护两个HTTP连接来模拟全双工连接的旧的轮询或长轮询(Comet)来说,这就极大的减少了不必要的网络流量与延迟。
要使用HTML5 Web Sockets从一个Web客户端连接到一个远程端点,你要创建一个新的WebSocket实例并为之提供一个URL来表示你想要连接到的远程端点。该规范定义了ws://以及wss://模式来分别表示WebSocket和安全WebSocket连接。一个WebSocket连接是在客户端与服务器之间HTTP协议的初始握手阶段将其升级到Web Socket协议来建立的,其底层仍是TCP/IP连接。

WebSocket Hybi草案12的地址:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-12,可以以此为入口访问其它的草案。


2)、优点
a)、服务器与客户端之间交换的标头信息很小,大概只有2字节;
b)、客户端与服务器都可以主动传送数据给对方;

c)、不用频率创建TCP请求及销毁请求,减少网络带宽资源的占用,同时也节省服务器资源;


3)、WebSocket数据帧的介绍
a)、草案版本00到草案版本05之间,详细可以查看草案文档,解码编码可以看见Netty的WebSocketFrameDecoder和WebSocketFrameEncoder实现;

b)、草案版本06到现在最新的草案17,介绍参见文章:http://blog.youkuaiyun.com/fenglibing/article/details/6852497


4)、WebSocket不同版本的几种握手方式
a)、无安全key、最老的WebSocket握手协议的实现(Flash);
b)、带两个安全key请求头的后端握手实现;
c)、带一个安全key请求头的后端握手实现;

参见:http://blog.youkuaiyun.com/fenglibing/article/details/7100070


5)、WebSocket可以穿越防火墙吗?

WebSocket使用标准的80及443端口,这两个都是防火墙友好协议,Web Sockets使用HTTP Upgrade机制升级到Web Socket协议。HTML5 Web Sockets有着兼容HTTP的握手机制,因此HTTP服务器可以与WebSocket服务器共享默认的HTTP与HTTPS端(80和443)。


6)、Web Sockets与代理服务器交互
代理服务器的问题:
a)、HTTP代理服务器可能会选择关闭流或闲置的WebSocket连接,因为它们看起好像是尝试连接一个没有回应的HTTP服务器;
b)、代理服务器可能会缓冲未加密的HTTP响应,这将会对HTTP响应流带来不可估计的延迟;
c)、未加密的WebSocket连接(ws://开头的请求)服务器时,如果中间存在透明代理服务器,连接可能会失败,或者发送消息会失败;而加密的WebSocket连接在存在透明代理服务器的情况下成功的机率会比较大;

关于代理详细参见:http://www.infoq.com/cn/articles/Web-Sockets-Proxy-Servers


7)、使用示例展示

WebSocket经由浏览器本身实现后,在Web端的实现就非常的简单,只需要简单初使化一个WebSocket组件,并且增加onopen、onmessage、onclose等事件的处理即可,以下是一个用于初使化WebSocket连接(WEB端JS实现)的源码截图展示:


这一个截图展示的在不支持WebSocket的浏览器,使用Comet针对不同的浏览器进行的组件初使化处理操作:


下面这个图展示的是使用WebSocket与不使用WebSocket发送消息的代码及逻辑差异,其中画红线的部份为使用WebSocket发送消息的实现,只有一行代码,而余下的代码,则是针对不支持WebSocket浏览器发送消息的代码

websocket实现通讯——Java 阅读详情

相关推荐

【计网】HTTP与WebSocket的区别

WebSocket协议1.定义 Websocket是html5提出的一个协议规范(2011年),参考rfc6455。 websocket约定了一个通信的规范,通过一个握手的机制,客户端(浏览器)和服务器(webserver)之间能建立一个类似tcp的连接,从而方便c-s之间的通信。在websocket出现之前,web交互一般是基于http协议的短连接或者长连接。 WebSocket他是为了解决客户端

白夜行 4267

从Http的连接到WebSocket

1、HTTP协议对长连接的支持以及各浏览器的支持情况 http://blog.youkuaiyun.com/fenglibing/article/details/7100222 2、WEB客户端与服务端信息交互的几种方式 1)、Flash XMLSocket 入门示例:http://en.wikipedia.org/wiki/XMLSocket 不足: a)、客户端必须安装 Flash 播

冯立彬的博客 5万+

WebSocket与HTTP的区别

1 WebSocket本质上是一种计算机网络应用层的协议,用来弥补HTTP协议在持久通信能力上的不足,它的握手是以HTTP的形式发起的,通过第一个request建立连接,之后交换的数据都不需要发送HTTP header就能交换数据。  客户端开始建立 WebSocket 连接时要发送一个 header 标记了 Upgrade 的 HTTP 请求,表示请求协议升级。 所以服务器端做出响应的简

xusanyao的博客 8631

这个表明将http协议转成websocket协议

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>websocket</title> <script> var socket; if (window...

weixin_30800987的博客 663

四十:如何从HTTP升级到WebSocket

WebSocket是一种基于TCP协议的全双工通信协议,能够在客户端和服务器之间提供持久的、低延迟的通信通道。一旦建立连接,WebSocket可以支持实时的双向数据传输,而无需每次请求都重新建立连接。与HTTP协议不同,WebSocket更适合用于即时消息推送、在线游戏、实时股票行情等场景。从HTTP协议升级到WebSocket协议是实现实时通信的关键步骤。通过握手过程,客户端和服务器能够顺利转换协议,建立持久的、双向的通信通道,进一步实现低延迟、实时的数据交换。

W楠的博客 1327

语言随机效应模型_线性混合效应模型 VS 方差分析

线性混合效应模型相比方差分析具有很多优点。为了让大家更直观的了解,我们来做一下两者的对比。基于模拟的方法,生成了以下数据dat_sim:这种数据格式是长格式,也就是从实验软件导出来的那种数据格式。这种数据格式可以直接使用线性混合效应模型进行分析。该实验设计是被试内项目间的单因素两水平设计。category是自变量,两个水平分别是outgroup和ingroup,outgroup比ingr...

weixin_31960565的博客 2688

从http到websocket

websocket

ComingLiu的博客 2701

第七章-分布式搜索引擎-ES:全文查询、分词查询、精确查询、地理坐标查询、组合查询(bool、funtion_score)以及RestApi

111

weixin_36580930的博客 1635

http,websocket和socket详解

一,HTTP 1,概念:http是目前应用最广泛的一个网络传输协议,是属于网络应用层的面向对象的协议. 1.1,HTTP1.1解决TCP3次握手4次挥手耗性能问题: 如果有大量的连接,每次在连接,关闭时都要经历3次握手,4次挥手,这很显然会造成性能低下.因此,HTTP1.1开始,默认采用持久连接,使用了一种叫做keepalive connections...

qq_38859786的博客 2万+

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 335

立创EDA手动拼板实战:当自带功能不够用,如何用‘复制粘贴’搞定异形拼版与特殊布局

本文详细介绍了立创EDA手动拼板技术在异形拼版与特殊布局中的应用实战。通过CTRL+SHIFT+V等核心操作技巧,解决混合尺寸拼板、特殊间距需求等复杂场景,提升PCB设计效率与灵活性,特别适合需要高精度控制的射频电路和医疗设备项目。

weixin_31967485的博客 390

websocket和http的瓜葛以及websocket协议实现

websocket和http的瓜葛以及websocket协议实现, 方法论, 如何在现有的tcp传输层协议上封装应用层协议

小杰312的博客 1万+

避坑指南:大疆智图集群建模中5个90%新手会踩的雷(附错误日志分析)

本文针对大疆智图集群建模功能,总结了新手在部署和运行时极易遇到的五个常见问题,包括共享目录权限与路径、主从节点版本一致性、临时存储路径设置、网络与防火墙配置以及错误日志分析。文章结合具体错误日志,提供了详细的排查步骤和解决方案,旨在帮助用户快速定位并解决问题,充分发挥集群建模的效率优势。

weixin_29238147的博客 335

WebSocket 和 HTTP 的区别及原理

参考:https://www.v2ex.com/amp/t/473376 参考:http://www.ruanyifeng.com/blog/2017/05/websocket.html 一、为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查

wulong710的专栏 1万+

海思Hi3516CV610--SPI NAND Flash移植实战:从手册到驱动的完整适配

本文详细介绍了海思Hi3516CV610芯片上SPI NAND Flash的移植实战,包括从手册解读到驱动适配的完整流程。以GD5F2GM7UEYIGR Flash为例,重点讲解了关键参数确认、模式选择、时序配置以及U-Boot和Linux内核驱动的具体实现步骤,帮助开发者快速完成Flash移植工作。

weixin_29158413的博客 447

新凯来嵌入式面经及参考答案

利用编译器预定义宏判断目标架构,如。

大模型大数据攻城狮的专栏 2068

WebSocket与HTTP

WebSocket与HTTP

水w的博客 1373

R语言深度学习实战:基于YOLO的目标检测

目标检测是计算机视觉领域的一项任务,旨在识别图像或视频中的物体,并确定它们的位置。与图像分类不同,目标检测要求模型能够识别多个物体,并为每个物体提供边界框(bounding box)的位置信息。这种任务在众多应用中都具有重要价值,例如自动驾驶、安防监控、物体跟踪等。YOLO(You Only Look Once)是一种非常流行的目标检测算法,它在速度和准确性之间取得了良好的平衡。与传统的目标检测方法不同,YOLO将目标检测任务视为回归问题,直接从输入图像中预测目标的类别和位置信息。

YOLO 330

websocket和http区别

目录一,什么是websocket二,websocket的原理三,websocket与http的关系四,websocket解决的问题1.http存在的问题2.long poll(长轮询)3.Ajax轮询4.websocket的改进推送延迟。服务端数据发生变更后,长轮询结束,立刻返回响应给客户端。服务端压力。长轮询的间隔期一般很长,例如 30s、60s,并且服务端 hold 住连接不会消耗太多服务端资源。推送延迟。服务端压力。配置一般不会发生变化,频繁的轮询会给服务端造成很大的压力。推送延迟和服务端压力无法中和

weixin_43522687的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

websocket与http,轻松理解websocket

一、websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 首先HTTP有 1.1 和 1.0 之说,也就是所谓的 keep-alive ,把多个HTTP请求合并为一个,但是 Websocket 其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范...

明天的你会感谢今天的自己 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

websocket和http的区别

一、WebSocket 是什么?WebSocket是HTML5规范提出的一种协议;目前除了完犊子的IE浏览器,其他浏览器都基本支持。他是一种协议,万变不离其宗,也是基于TCP协议的;和HTTP协议是并存的两种协议。WebSocket是HTML5中的协议。HTML5 Web Sockets规范定义了Web Sockets API,支持页面使用Web Socket协议与远程主机进行全双工的通信。它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作。HTML5 We

tsqjxy的博客 3839

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HTTP 和 WebSocket

它是Web上信息传递的基础,允许客户端(通常是浏览器)和服务器之间交换文本、图像、视频和其他类型的数据。WSS 是 WebSocket 协议的安全版本,它通过 TLS(传输层安全协议)对数据进行加密,确保在网络上传输的数据不被窃听或篡改。那么问题来了,HTTP是请求一次,响应一次,服务器不能给客户端发送信息。WebSocket 的 Ping-Pong 机制是维持连接稳定性的重要手段,确保双方在长时间不活动的情况下仍然能够保持连接有效性。请求头部包含多个键值对,用于传递客户端的信息和请求的附加参数。

weixin_45459648的博客 2087

TCP,HTTP,WEBSOCKET随记

TCP ,HTTP,WEBSOCKET随记 TCP tcp:Transmission Control Protocol ,传输控制协议,属于(OSI:open system interconnection)七层结构中的输出层。 tcp三次握手:用C表示客户端机器 S表示服务端机器。 第一次握手:C向S发送一次数据包请求,第一次数据包包含了,源端口地址,目标地址,syn等,syn: syncron...

tc19910219的博客 587

Http与WebSocket

WebSocket 和 HTTP 都是基于的协议,但它们的设计目标和工作方式有很大区别。✅✅。

阿呆的专栏 1364

WebSocket与HTTP有什么区别

1、前言 最近面试总被问WebSocket与HTTP两种协议的关系以及相关实现原理,翻了翻资料,知乎上的一篇回帖让我恍然大悟,把它也分享给大家。 2、WebSocket与HTTP WebSocket:是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算); HTTP:首先HTTP有1.1和1.0之说,也就是所谓的ke...

Something的博客 1701

Websocket,HTTP,TCP

Websocket与HTTP,TCP HTTP和TCP的关系 Websocket和TCP的关系 WebSocket与HTTP 同:建立在TCP之上,同http一样通过TCP来传输数据 不同:HTTP协议为单向协议,即浏览器只能向服务器请求资源,服务器才能将数据传送给浏览器,而服务器不能主动向浏览器传递数据。分为长连接和短连接,短连接是每次http请求时都需要三次握手才能发送...

weixin_45439324的博客 1593
上一篇: asterisk 说明
下一篇: asterisk架构
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值