WebSocket 协议

简介

WebSocket 协议在 2008 年诞生,2011 年成为国际标准。所有浏览器都已经支持了。

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

其他特点包括:

(1)建立在 TCP 协议之上,服务器端的实现比较容易。

(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

ws://example.com:80/some/path

特点和应用场景

当涉及实时双向通信和实时数据传输时,WebSocket 是一种重要的网络协议。
它是一种基于TCP(传输控制协议)的协议,允许在客户端和服务器之间建立持久性的连接,实现双向通信。
与传统的HTTP请求-响应模型不同,WebSocket 连接在建立后,客户端和服务器可以通过单个连接进行实时数据的双向传输,从而减少了通信的延迟和资源消耗。

WebSocket 协议的特点包括:

💧 双向通信:WebSocket 允许服务器主动向客户端推送数据,也可以让客户端向服务器发送数据,实现全双工通信。

💧 持久性连接:一旦建立了 WebSocket 连接,它将保持活动状态,直到其中一方显式地关闭连接。

💧 较低的通信开销:与传统的 HTTP 请求-响应模型相比,WebSocket 通过在单个连接上复用通信,减少了连接建立和关闭的开销。

💧 基于事件驱动:WebSocket 使用事件驱动的方式进行消息传递,可以实时地将数据推送给客户端。

💧 跨域支持:WebSocket 支持跨域通信,允许在不同域之间进行实时通信。

💧 安全性:WebSocket 可以通过 TLS/SSL 协议进行加密,确保数据在传输过程中的安全性。

在使用 WebSocket 的应用场景中,最常见的包括:

🔥 实时聊天应用:允许用户实时地发送和接收消息。
🔥 在线多人游戏:支持实时游戏数据传输和游戏状态同步。
🔥 股票市场和实时金融数据:允许实时地推送最新的市场数据和价格变动。
🔥 实时协作和共享:支持多用户实时编辑文档或画板。

使用 WebSocket 的开发过程中,客户端和服务器都需要遵循 WebSocket 协议规范,并使用相应的库和框架来处理连接和消息传递。

总的来说,WebSocket 提供了一种高效、实时的通信机制,为现代 Web 应用程序带来更好的用户体验和功能。

客户端的简单示例

客户端的简单示例

WebSocket 的用法相当简单。

下面是一个网页脚本的例子(点击这里看运行结果),基本上一眼就能明白。

var ws = new WebSocket("wss://echo.websocket.org");

ws.onopen = function(evt) { 
  console.log("Connection open ..."); 
  ws.send("Hello WebSockets!");
};

ws.onmessage = function(evt) {
  console.log( "Received Message: " + evt.data);
  ws.close();
};

ws.onclose = function(evt) {
  console.log("Connection closed.");
};      

教程

🔑 WebSocket 教程
🔑 深入学习 WebSockets 概念和实践
🔑 WebSocket协议-基础篇
🔑 【websocket】spring boot 集成 websocket 的四种方式

协议参考

WebSocket API Specification-W3上的规格说明书
RFC 6455: The WebSocket Protocol
JSR 356 (Java API for WebSocket)
WebSocket

posted @ 2023-07-23 11:02  ioufev  阅读(93)  评论(0编辑  收藏  举报