首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Flask-SocketIO会有`http`协议而不是`ws`?

Flask-SocketIO是一个基于Flask框架的实时应用开发库,它允许在浏览器和服务器之间建立双向通信。虽然它使用了WebSocket协议来实现实时通信,但为什么在Flask-SocketIO中使用的是http协议而不是ws协议呢?

首先,需要理解WebSocket协议的工作原理。WebSocket是一种在单个TCP连接上进行全双工通信的协议,它通过在HTTP握手之后升级到WebSocket连接来实现。在握手阶段,客户端发送一个HTTP请求,服务器返回一个HTTP响应,然后双方协商升级到WebSocket连接。一旦升级完成,双方就可以通过这个连接进行实时通信。

Flask-SocketIO之所以使用http协议而不是ws协议,是因为它借助了Flask框架的HTTP路由和视图函数的机制来处理WebSocket连接。在Flask-SocketIO中,客户端首先通过HTTP请求与服务器建立连接,然后服务器会将这个连接升级为WebSocket连接。这样做的好处是可以利用Flask框架已有的路由和视图函数来处理WebSocket连接,而不需要额外的配置和代码。

具体来说,Flask-SocketIO使用了一个特殊的HTTP请求头Upgrade来指示服务器将连接升级为WebSocket连接。客户端发送的HTTP请求中包含了这个特殊的请求头,服务器在接收到请求后会检查这个请求头,并根据其值来判断是否升级连接。如果服务器发现请求头中包含了Upgrade: websocket,则会将连接升级为WebSocket连接,否则继续按照HTTP请求的处理方式进行处理。

总结起来,Flask-SocketIO之所以使用http协议而不是ws协议,是因为它借助了Flask框架的HTTP路由和视图函数的机制来处理WebSocket连接。通过在HTTP请求中添加特殊的请求头Upgrade: websocket,服务器可以将连接升级为WebSocket连接,实现实时通信的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么ChatGPT采用SSE协议不是Websocket?

SSE是HTML5规范中的一个通信相关API,它主要包含两个部分:服务端与浏览器端的通信协议(基于HTTP协议),以及浏览器端JavaScript可使用的EventSource对象。...SSE运行在HTTP协议之上,它允许服务器以事件流(Event Stream)的形式将数据发送给客户端。客户端通过建立持久化的HTTP连接,并监听这个事件流,从而可以实时接收到服务器推送的数据。...WebSocket则支持双向通信,允许服务器和客户端之间进行实时的数据交换。 连接建立:SSE利用基于HTTP的长连接,通过常规的HTTP请求和响应来建立连接,进而实现数据的实时推送。...相反,WebSocket采用自定义的协议,通过创建WebSocket连接来实现双向通信。 兼容性:由于SSE基于HTTP协议,因此它可以在大多数现代浏览器中使用,并且无需进行额外的协议升级。...总结起来,SSE使用了基于文本和HTTP协议的简单机制,使得服务器能够实时地将数据推送到客户端,而无需客户端频繁地发起新的请求。

84010

为什么HTTP2 ,不是 HTTP2.0 ?

今天讲的 HTTP 协议属于应用层协议,也是互联网广泛使用的基础协议之一。 一、 HTTP/0.9 0.9 版本是HTTP最早的版本,诞生于 1991 年,比较简单。...当然,这个不是标准字段,只是一个临时方案。 三、 HTTP/1.1 1997年,HTTP/1.1 版本发布。进一步完善了HTTP协议,也是目前最流行的版本,一直活跃至今。...为什么HTTP/2 ,不是HTTP/2.0 ? HTTP/2 工作组特别给出了解释,以前的1.0、1.1 容易让人误解,实际使用中难以区分,所以,决定后续的版本不在使用小版本,一律采用大版本。...HTTP/2 把多个请求 - 响应分解成流,交给 TCP 后,TCP 会再拆成更小的段(segment)依次发送。如果网络不好时,会发生丢包。 TCP为了保证可靠性传输,会有丢包重传机制。...为了解决这个问题,Google推出了QUIC协议,让 HTTP 跑在 QUIC 上不是 TCP 上,这个新版本,我们称之为 HTTP/3 HTTP/3 目前还处于草案阶段,离正式发布还有段时间,我们拭目以待

69540

为什么网址一定要用https开头,不是http

本文将深入探讨为什么越来越多的网址选择以HTTPS开头,而非HTTP,从安全、信任、合规、性能及未来发展等多个维度展开分析。...安全性:加密传输,抵御数据窃听 HTTP协议,即超文本传输协议,作为互联网上应用最为广泛的协议,其工作原理是明文传输数据,这意味着数据在传输过程中容易被监听、截取甚至篡改。...相比之下,HTTPS协议通过对HTTP进行SSL/TLS加密,确保了数据在传输过程中的安全性。...这些法规通常要求网站在处理个人数据时采取适当的安全措施,HTTPS正是实现数据安全传输的重要手段之一。...但随着技术进步,如HTTP/2、HTTP/3协议的引入,以及TLS 1.3的高效加密算法,HTTPS的性能劣势已经大大缩小,甚至在某些场景下,由于协议优化和浏览器预加载机制,HTTPS的性能表现可与HTTP

11310

Flask:使用SocketIO实现WebSocket与前端Vue进行实时推送(gevent-websocket、flask-socketio、flask不出现running on 127..问题)

Flask的原生WebSocket(flask-sockets)与封装SocketIO Flask-Sockets和Flask-SocketIO之间的主要区别在于前者仅仅将WebSocket协议(通过使用...Flask-SocketIO则不同,它不仅实现了WebSocket协议,并且对于那些不支持WebSocket协议的旧版浏览器,使用它也能够实现相同的效果。新版旧版的浏览器都能使用他。...另一个区别是Flask-SocketIO实现了SocketIO Javascript库公开的消息传递协议Flask-Sockets只是实现通信通道,发送的是完全取决于应用程序。...1、Flask-SocketIO(封装写法) 使用SocketIO之前需要导入该包,即pip install flask-socketio。也可以直接在代码中import该包中的两个功能。...协议不是走的是ws,笔者推测是对ws进行了封装,导致最终走的是http协议

8010

Flask学习与实战11:WebSocket的使用与简单通信

WebSocket协议 用这个协议最方便的就是,服务器主动向客户端推送信息。客户端也可以主动向服务器发送信息。属于应用层协议,在握手阶段还是使用了HTTP协议。...可以看到这两种方式都体现出了HTTP协议的被动性,也就是说服务端不能主动联系客户端,只能有客户端发起。...Websocket就解决了这个问题,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端了。...1、安装Websocket 通过命令: pip install flask-socketio pip install websocket-gevent (第二条这条命令部分机子是需要的,有些环境不需要,...$(document).ready(function() { namespace='/test_conn' var socket = io.connect('ws

7410

基于Python+Flask实现一个在线聊天室网站系统

在本文中,我们将介绍如何使用 Flask 和 Websockets 通过 Flask-SocketIO 框架创建一个简单的在线聊天室。1. 什么是Flask?...Websockets 和 Flask-SocketIOWebsockets 是一个网络通信协议,允许服务器和客户端之间进行双向实时通信。...与传统的 HTTP 请求相比,Websockets 提供了一个持久的连接,使得数据能够实时、高效地在双方之间流动。...Flask-SocketIO 则是一个 Flask 插件,它使得在 Flask 应用中集成 Websockets 变得非常简单。...总结借助 Flask 和 Flask-SocketIO,你可以轻松创建一个功能齐全的在线聊天室。 Websockets 保证了数据在服务器和客户端之间的实时交互,为用户提供了一个无缝的体验。

67260

【Web技术】740- 零距离接触 WebSocket

TCP 连接上进行全双工通讯,没有了Request和Response的概念,两者地位完全平等,连接一旦建立,客户端和服务端之间实时可以进行双向数据传输 关联和区别 HTTP HTTP是非持久的协议,客户端想知道服务端的处理进度只能通过不停地使用...websocket虽然是独立于HTTP的一种协议,但是websocket必须依赖 HTTP 协议进行一次握手(在握手阶段是一样的),握手成功后,数据就直接从 TCP通道传输,与 HTTP 无关了,可以用一张图理解两者有交集...,但是并不是全部。...socket socket也被称为套接字,与HTTP和WebSocket不一样,socket不是协议,它是在程序层面上对传输层协议(可以主要理解为TCP/IP)的接口封装。...关于Websocket WebSocket心跳 可能会有一些未知情况导致SOCKET断开,客户端和服务端却不知道,需要客户端定时发送一个心跳 Ping 让服务端知道自己在线,服务端也要回复一个心跳

48531

浅析一次HTTP请求

三、抓包分析 A) 三次握手 1.最开始是本地发送了2次请求到服务器,这里为什么会有两次请求,稍后再说,我们先主要看 HTTP 对应的端口请求,如下: 192.168.2.135:60738---->45.76.105.92...以上就是一个 HTTP 完整的请求,整个流程用图表示如下: ? C) Keep-Alive 这里肯定有同学会问,既然这是一次完整的 HTTP 请求,那么是不是每次请求都会有三次握手吗?...,在 HTTP 1.1协议中,官方默认就是支持 Keep-Alive 参数的,默认是持续连接。...说完 Keep-Alive,我们回到最开始的问题,为啥一次 HTTP 请求会有进行两个端口的握手呢?...所以这种情况的发生就是浏览器自身的实现,谷歌浏览器为什么会这么实现,我的猜测是:尽可能的保证HTTP访问的可用性,当某个端口不可用,可以立即切换到另外一个端口,完成HTTP的请求和响应。

1.4K41

WebSocket实现在线聊天

另外,一个HTTP连接在长时间没有数据传输的情况下,链路上的任何一个网关都可能关闭这个连接,网关是我们不可控的,这就要求Comet连接必须定期发一些ping数据表示连接“正常工作”。...但是WebSocket并不是全新的协议,而是利用了HTTP协议来建立连接。...101表示本次连接的HTTP协议即将被更改,更改后的协议就是Upgrade: websocket指定的WebSocket协议Http为什么不能实现全双工通信呢?...实际上HTTP协议是建立在TCP协议之上的,TCP协议本身就实现了全双工通信,但是HTTP协议的请求-应答机制限制了全双工通信。...WebSocket连接建立以后,没有Http协议的限制,进而可以进行互相进行通讯 WebSocket特点 建立在 TCP 协议之上,服务器端的实现比较容易。 与 HTTP 协议有着良好的兼容性。

4K20

前端架构师破局技能,NodeJS 落地 WebSocket 实践

ws 模块实现 Express 集成 WebSocket 实例 消息广播 安全与认证 BFF 应用 网络协议进化 HTTP 协议是前端最熟悉的网络通信协议。...连接方式如下: ## 普通连接 ws://localhost:80/test ## 安全连接 wss://localhost:80/test 但是 WebSocket 也不是完全脱离 HTTP 的,若要建立...不过因为服务端是 Node.js 实现,因此会有更丰富的支持。...) 当客户端通过 ws:// 连接服务端时,服务端会进行协议升级,也就是将 http 协议升级成 websocket 协议,此时会触发 upgrade 事件: server.on('upgrade',...https 表示安全的 http 协议,组成是 HTTP + SSL wss 则表示安全的 ws 协议,组成是 WS + SSL 那为什么一定要用 wss 呢?

1.6K20

默认终结点

但是对于WCF来说,在进行服务寄宿的时候,你必须以编程或者配置的方式为服务添加至少一个终结点,终结点需要具备基本的ABC三要素。...从上面的例子我们可以看到,对于自动创建的四个默认终结点,如果采用基于HTTP协议的地址,则采用BasicHttpBinding作为其终结点绑定;如果地址是基于TCP协议的,作为终结点绑定的则为NetTcpBinding...但是,为什么基于HTTP协议的地址采用BasicHttpBinding,不是WSHttpBinding或者WS2007HttpBinding呢?...这实际代表了默认的协议绑定映射关系,这也是为什么在上面的例子中基于HTTP协议的默认终结点会采用BasicHttpBinding作为绑定类型的原因。...比如,对于上面的例子,如果为之添加一个配置文件并进行如下的配置:将基于HTTP的绑定类型设置为WS2007HttpBinding。

75160

WebSocket小叙

直到今天, 我在调试的时候, 发现发出了HTTP请求, 我想, 事情可能不是我想的那样....很显然: HTTP的单向通信限制, 服务器不能主动联系客户端 HTTP协议本身就是基于TCP的, TCP本身就是全双工通信的....这感觉就像是他们借用了一下HTTP, 然后说咱们接下来就都用WebSocket吧. 那么问题来了, 既然要实现这种长连接, 为什么还要借助HTTP之手, 直接TCP建立连接不行么?...因为WebSocket就是为了解决HTTP协议问题, 也就是说主要运行在之前HTTP的场景中, 而为了兼容现有浏览器的握手规范, 所以借助了HTTP协议来完成握手....WebSocket协议是: ws 和 wss. 其区别与 http 和 https 相同. wss 就是在 ws 的通信过程中再套一层TLS/SSL 协议. 那么WebSocket有哪些应用场景呢?

54110

websocket深入浅出

websocket简介 websocket是什么 答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议为什么需要websocket? 疑问?...我们已经有了 HTTP 协议为什么还需要另一个协议?它能带来什么好处?...答: 因为 HTTP 协议有一个缺陷:通信只能由客户端发起 我们都知道轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开), 因此websocket应运而生。...如果不是101状态码,表示握手升级的过程失败了 101是Switching Protocols,表示服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。...每个socket都会有一个唯一的id,私聊的实现方式就是找到这个socket对象,发送事件,浏览器接收事件就实现了私聊。

2.2K10

一文吃透 WebSocket 原理

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。 ws://example.com:80/some/path 为什么需要 WebSocket?...我们已经有了 HTTP 协议为什么还需要另一个协议?它能带来什么好处? 因为 HTTP 协议有一个缺陷:通信只能由客户端发起,不具备服务器推送能力。...下面一张图说明了 HTTP 与 WebSocket 的主要区别: 不同点: 1、 WebSocket 是双向通信协议,模拟 Socket 协议,可以双向发送或接受信息, HTTP 是单向的; 2、...,快点帮我找到对应的助理处理~不是那个老土的 HTTP 。...Upgrade 依然是固定的,告诉客户端即将升级的是 WebSocket 协议不是 mozillasocket ,lurnarsocket 或者 shitsocket。

2.1K10

理解websocket的原理

下面看一下http协议关于请求处理的发展。 http1.0的时候,一个http请求的生命周期是客户端发起请求,服务器响应,断开连接。...以上是http协议的关于请求的一些发展,websocket就服务端推送提供了另外一种解决方案。他本质上是在tcp协议上封装的另一种应用层协议(websocket协议)。...因为他是基于tcp的,所以服务端推送自然不是什么难题。但是在实现上,他并不是直接连接一个tcp连接,然后在上面传输基于websocket协议的数据包。他涉及到一个协议升级(交换)的过程。...服务会返回形如下面的http头(可以参考websocket协议)。...下面我们看看为什么。首先我们看浏览器发出的包。 ? 再看看服务器给浏览器推送的数据包。 ? 我们发现服务器(tcp)推送消息的时候把ack也带上了。不是发送两个tcp包。这就是tcp的机制。

1.8K21

5000字!带你零距离接触websocket!

1.2、关联和区别 1.2.1、HTTP 1、HTTP是非持久的协议,客户端想知道服务端的处理进度只能通过不停地使用 Ajax进行轮询或者采用 long poll 的方式来,但是前者对服务器压力大,后者则会因为一直等待...3、websocket虽然是独立于HTTP的一种协议,但是websocket必须依赖 HTTP 协议进行一次握手(在握手阶段是一样的),握手成功后,数据就直接从 TCP通道传输,与 HTTP 无关了,可以用一张图理解两者有交集...,但是并不是全部。...1.2.2、socket 1、socket也被称为套接字,与HTTP和WebSocket不一样,socket不是协议,它是在程序层面上对传输层协议(可以主要理解为TCP/IP)的接口封装。...2、关于Websocket 2.1、WebSocket心跳 可能会有一些未知情况导致SOCKET断开,客户端和服务端却不知道,需要客户端定时发送一个心跳 Ping 让服务端知道自己在线,服务端也要回复一个心跳

59510

网络请求+基于Node.js的WebSocket

WebSocket连接可以实现全双工通信HTTP连接不行呢?...WebSocket并不是全新的协议,而是利用了HTTP协议来建立连接。我们来看看WebSocket连接是如何创建的。...该请求和普通的HTTP请求有几点不同: GET请求的地址不是类似/path/,而是以ws://开头的地址; 请求头Upgrade: websocket和 Connection: Upgrade表示这个连接将要被转换为...为什么WebSocket连接可以实现全双工通信HTTP连接不行呢? 实际上HTTP协议是建立在TCP协议之上的,TCP协议本身就实现了全双工通信,但是HTTP协议的请求-应答机制限制了全双工通信。...很显然,要支持WebSocket通信,浏览器得支持这个协议,这样才能发出ws://xxx的请求。

4.8K20

WebSocket刨根问底(一)

一个WebSocket请求首先使用非正常的HTTP请求以特定的模式访问一个URL,这个URL有两种模式,分别是ws和wss,对应HTTP协议中的http和https,请求头中除了Connection:Upgrade...那么这里有一点需要注意:那就是ws和wss模式并不能算作HTTP协议的一部分,因为HTTP请求和请求头并不包含URL模式,HTTP请求只在请求的第一行中包含相对于服务器的URL,在Host头中包含域名,...WebSocket中特有的ws和wss模式主要用于通知浏览器和API是希望使用SSL/TLS(wss),还是希望使用不加密的方式(ws)进行连接。...WebSocket协议的优势 说了这么多,那么接下来我们来看看WebSocket协议都有哪些优势: 1.由于WebSocket连接在端口80(ws)或者443(wss)上创建,与HTTP使用的端口相同,...一般来说是这样,一个节点周期性的发送一个小数据包到另外一个节点(ping),另一个节点则使用了包含了相同数据的数据包作为响应(pong),这样两个节点都将处于连接状态 4.使用该协议,当消息启动或者到达的时候

1K60
领券