打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WebSocket 与 Socket 的区别

准备:如果不太了解网络的朋友可以先看一下我之前写的文章 需要了解的网络协议

想必大家再做即时通讯业务或需要替代轮训的时候,肯定听说过 WebSocket 和 Socket 这两个东西,我们今天就来简单说一下这两者的区别。

WebSocket 是什么

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次 HTTP 握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

为什么有了 HTTP 还需要 WebSocket?

一般情况下我们使用 HTTP 有一个很大的缺陷,就是 HTTP 只能由客户端来主动发起,如果有需要服务端主动通知的业务,就需要轮训。轮询的效率低,非常浪费资源。为了解决 Web 端即时通讯的需求就出现了 WebSocket。

WebSocket(2)--为什么引入WebSocket协议

兼容性

WebSocket 最早是在 HTML5 标准中的一部分,基本现代浏览器都是支持的,都可以直接使用。虽然是 HTML5 的一部分,但是在浏览器之外也有相应的实现。比如 Socket.io 这个库支持 Java、C++、Swift、Datr ,Python 的 ws4py,C++ 的WebSocket++ 等等。 服务端主流的 Web 容器如 Apache、Nginx、Tomcat 也都支持 WebSocket,还有 WebSocket 服务端框架如 websocketd 等。

Socket 是什么

Unix 中的 Socket

操作系统中也有使用到 Socket 这个概念用来进行进程间通信,它和通常说的基于 TCP/IP 的 Socket 概念十分相似,代表了在操作系统中传输数据的两方,只是它不再基于网络协议,而是操作系统本身的文件系统。

网络中的 Socket

网络中的 Socket 并不是什么协议,而是为了使用 TCP,UDP 而抽象出来的一层 API,它是位于应用层和传输层之间的一个抽象层。Socket 是对 TCP/IP 的封装;HTTP 是轿车,提供了封装或者显示数据的具体形式;Socket 是发动机,提供了网络通信的能力。在 Unix 一切皆文件哲学的思想下,Socket 是一种'打开—读/写—关闭'模式的实现,服务器和客户端各自维护一个'文件',在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。所以如果你想基于 TCP/IP 来构建服务,那么 Socket API 可能就是你会接触到的API。

WebSocket 与 Socket 的区别

正如如上所说:

  1. Socket 是传输控制层的接口。用户可以通过 Socket 来操作底层 TCP/IP 协议族通信。
  2. WebSocket 是一个完整应用层协议。
  3. Socket 更灵活,WebSocket 更易用。
  4. 两者都能做即时通讯
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
1小时教你理解HTTP,TCP,UDP,Socket,WebSocket
搭建即时通讯服务器WebSocket,挺容易嘛
Socket、Tcp、Udp、Http 的认识及区别
网络协议之(Http、Socket、WebSocket)
关于Socket,看我这几篇就够了(三)原来你是这样的Websocket
开源移动端 IM 框架 MobileIMSDK v6.0 发布
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服