WebSocket 的重要性

全面理解WebSocket与Socket、TCP、HTTP的关系及区别

Websocket 是一种新式的协议,它允许客户端和服务器之间树立实时的双向通讯通道。比较于 HTTP 协议来说,它具有以下优点:

  • 实时性: Websocket支撑服务器主意向客户端推送音讯,使得客户端能够实时接收到服务器的事情和数据变化。
  • 双向性: Websocket支撑全双工通讯,即客户端和服务器能够同时发送和接收数据。
  • 节约资源: 比较于轮询机制,Websocket只需求树立一次衔接即可完成实时通讯,这样能够削减服务器的压力和网络流量。
  • 兼容性: Websocket 协议能够支撑所有干流的浏览器和移动设备。

Websocket 协议在实时通讯、在线谈天、多人游戏、实时监控等场景下具有广泛的运用价值。

WebSocket 和 HTTP 的差异

HTTP 是一个无状况的协议,使客户端向服务器恳求资源,并从服务器接收呼应。客户端运用 HTTP 恳求/呼应语法,即恳求发送到服务器之后,服务器向客户端回来 HTML 文件、图像和其他媒体内容。

WebSocket 通讯协议测验在较大范围内改善 Web 实时通讯和插件技术,并提供全双工、根据事情的通讯而无需选用低效的轮询方法。开发人员能够从 Web 浏览器的 JS 端轻松地创立 WebSocket 衔接并发送数据,从而完成运用程序的实时数据传输的完成。

由于 WebSocket 是面向音讯的,因而它愈加适用于实时通讯,而 HTTP 更适用于恳求和服务器-客户端通讯的呼应。

全面理解WebSocket与Socket、TCP、HTTP的关系及区别

差异总结

  • 衔接方法不同: HTTP 是一种单向恳求-呼应协议,每次恳求需求重新树立衔接,而 WebSocket 是一种双向通讯协议,运用长衔接完成数据实时推送。
  • 数据传输方法不同: HTTP 协议中的数据传输是文本格式的,而 WebSocket 能够传输文本和二进制数据。
  • 通讯类型不同: HTTP 主要用于客户端和服务器之间的恳求和呼应,如浏览器恳求网页和服务器回来网页的 HTML 文件。WebSocket 能够完成双向通讯,常常用于实时通讯场景。
  • 功能方面不同: 由于 HTTP 的每次恳求都需求树立衔接和断开衔接,而 WebSocket 能够在一次衔接上进行屡次通讯,WebSocket 在功能上比 HTTP 有优势。

WebSocket 和 TCP 的差异

WebSocket 和 HTTP 都是根据 TCP 协议的运用层协议。

  • 层次结构: WebSocket 是运用层协议,而 TCP 是传输层协议。
  • 协议特点: TCP 是一种面向衔接的协议,运用三次握手树立衔接,提供牢靠的数据传输。而 WebSocket 是一种无状况的协议,运用 HTTP 协议树立衔接,能够进行双向通讯,WebSocket 的数据传输比 TCP 愈加轻量级。
  • 数据格式: TCP 传输的数据需求自定义数据格式,而 WebSocket 能够支撑多种数据格式,如 JSON、XML、二进制等。WebSocket 数据格式化能够更好的支撑 Web 运用开发。

衔接方法: TCP 衔接的是物理地址和端口号,而 WebSocket 衔接的是 URL 地址和端口号。

全面理解WebSocket与Socket、TCP、HTTP的关系及区别

WebSocket 和 Socket 的差异

协议不同

Socket 是根据传输层 TCP 协议的,而 Websocket 是根据 HTTP 协议的。Socket 通讯是通过 Socket 套接字来完成的,而 Websocket 通讯是通过 HTTP 的握手进程完成的。

持久化衔接

传统的 Socket 通讯是根据短衔接的,通讯完成后即断开衔接。而 Websocket 将 HTTP 协议晋级后,完成了长衔接,即树立衔接后能够持续通讯,避免了客户端与服务端频频衔接和断开衔接的进程。

双向通讯

传统的 Socket 通讯只支撑单向通讯,即客户端向服务端发送恳求,服务端进行呼应。而 Websocket 能够完成双向通讯,即客户端和服务端都能够建议音讯,实时通讯效果更佳。

功率

Socket 通讯具有高效性和实时性,由于传输数据时没有 HTTP 协议的头信息,而 Websocket 除了HTTP协议头之外,还需求发送额外的数据,因而通讯功率相对较低。

运用场景

Socket 适用于实时传输数据,例如在线游戏、谈天室等需求快速交流数据的场景。而 Websocket 适用于需求长期坚持衔接的场景,例如在线音视频、远程操控等。

更多详细介绍能够看:WebSocket 和 Socket 有什么差异?看这儿就够了

JavaScript 中的 WebSocket

在前端 Web 运用中运用 WebSocket 目标能够非常方便地完成双向实时通讯。具体来说,需求以下过程:

1、创立 WebSocket 目标,并指定衔接的 URL 地址。

let socket = new WebSocket('ws://localhost:8080');
监听 WebSocket 目标的各种事情,并编写相应的回调函数来处理事情:
Copy code
socket.onopen = function(event) {
    console.log('衔接成功');
};
socket.onerror = function(event) {
    console.log('衔接出错');
};
socket.onmessage = function(event) {
    console.log('收到音讯:' + event.data);
};
socket.onclose = function(event) {
    console.log('衔接封闭');
};

2、发送音讯到服务器端:

socket.send('Hello, WebSocket!');

3、封闭WebSocket衔接:

socket.close();

需求留意的是,WebSocket 目标也需求与服务器进行握手,以完成衔接的树立和保护。通常,服务器端的完成需求支撑 WebSocket 协议,例如 Node.js 中的 ws 或 Java 中的 Jetty。

WebSocket 目标提供了丰富的 API,包括发送数据、封闭衔接、获取衔接状况等等。在运用 WebSocket 进行开发时,应该了解这些 API,并编写高效的音讯传输代码,以保证 WebSocket 协议的高效、稳定和安全

知识扩展:

  • SOAP 协议和 HTTP 协议
  • WebSocket前后端交互怎么完成