webSocket和http的区别

1 什么是webSocket

webSocket实现了浏览器与服务器的全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,它本质上是一个基于TCP的协议

2 websocket和http区别

(1)相同点

  • 都是基于TCP协议,都是可靠性传输协议
  • 都是应用层协议

(2)不同点

  • http是单向的,websocket可以双向发送和接受信息
  • websocket需要浏览器和服务器握手建立连接,http是浏览器发起向服务器的连接,服务器预先不知道这个连接

(3)联系
websocket在建立握手时,数据是通过http传输的,但是建立之后,在真正传输时候是不需要http协议的

3 websocket解决的问题

(1)http存在的问题

  • http是无状态协议,每一次通信完成,服务端都不知道下一次的客户端是谁。需要每次知道对方是谁才进行相应的响应,因此不利于实时通讯
  • http采用一次请求一次响应,每次请求和响应都要携带大量请求头,可能导致效率低下
  • 不能服务端主动发送

(2)长轮询
基于上述问题,解决办法是客户端发起长轮询,如果服务端的数据没有发生变更,会保持连接,知道客户端数据发送变化或等待一定时间超时才会返回

存在问题: 推送延迟,服务端数据变更,才会结束长轮询,才会返回响应给客户端

(3)websocket的改进
一旦websocket连接建立以后,后续数据都以帧序列的形式传输。客户端断开websocket连接或服务端中断连接前,需要客户端和服务端重新发起请求。

websocket的特点:

  • 建立websocket后,客户端和服务端是完全平等的,可以互相主动请求;而http的长连接是基于http,是传统的客户端对服务端发起的请求
  • http长连接中,每次数据交换除了真正的数据以外,还有携带的请求头信息。websocket协议通过第一个请求建立了TCP连接以后,之后交换数据都不需要发送http header就能交换数据
### 回答1: WebSocket 和 Socket 的区别在于 WebSocket 是一种用于在单个 TCP 连接上进行全双工通信的协议,而 Socket 则是用于进行网络通信的通用接口。 WebSocket 在建立连接后,可以在单个连接上进行双向通信,而不需要对每个信息都进行 HTTP 请求。这使得 WebSocket 适用于需要实时传输大量数据的应用程序,如实时聊天、游戏、股票行情等。 Socket 则是一种通用的网络编程接口,它可以用于建立各种网络应用程序。Socket 可以使用各种协议,如 TCP、UDP 等进行通信。Socket 可以用于建立各种网络应用程序,但不一定适用于所有情况,特别是对于需要实时传输大量数据的应用程序,WebSocket 可能更为合适。 ### 回答2: WebSocket和Socket都是用于实现网络通信的协议,但在使用方式和功能上有一些区别。 首先,WebSocket是一种在Web浏览器和服务器之间进行全双工通信的协议,它可以在浏览器和服务器之间建立一个持久的连接,并且可以实现实时的数据传输。与传统的HTTP请求-响应模式不同,WebSocket是一个基于事件的协议,它允许服务器主动发送消息给客户端,而不需要客户端明确发出请求。这使得WebSocket非常适合用于实时应用程序,如实时聊天、在线游戏等。 而Socket是一种在计算机网络中进行进程间通信的一种方式,它提供了底层的网络通信功能。Socket可以用于不同计算机之间的通信,包括客户端和服务器之间的通信。在使用Socket时,通常需要编写数据收发的代码,并且需要处理网络中可能出现的各种异常。 此外,WebSocket在使用上更加简单和高级。浏览器的JavaScript提供了WebSocket的API,通过WebSocket对象可以直接进行通信,开发者无需关注底层通信细节。而Socket需要开发者自己编写Socket连接的代码和数据处理逻辑。 总结来说,WebSocket和Socket在功能和使用方式上有一定的区别WebSocket适用于Web浏览器和服务器之间的全双工实时通信,而Socket适用于不同计算机间进程间的通信,包括客户端和服务器之间的通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值