【JS】1699- 重学 JavaScript API - WebSockets API

news/2025/1/17 1:44:58/

f4c398943c1111017a971fac6744af88.jpeg

前期回顾:

1. Page Visibility API

2. Broadcast Channel API

3. Beacon API

4. Resize Observer API

5. Clipboard API

6. Fetch API

7. Performance API

8. Web Storage API

WebSockets API 提供了一种在客户端和服务器之间建立持久连接的机制,使得实时数据的传输变得更加简单和高效。

🏝 1. 什么是 WebSockets API

1.1 概念介绍

WebSockets API 「允许在浏览器和服务器之间进行双向通信」。相比传统的 HTTP 请求-响应模式,WebSockets 允许服务器主动向客户端推送数据,实现实时性和双向通信。它建立在标准的 HTTP 协议之上,使用标准的 WebSocket URL 进行通信。

1.2 作用和使用场景

WebSockets API 有许多有用的场景场景,包括实时聊天应用、多人协作工具、实时数据监控和游戏等。通过使用 WebSockets,开发者可以轻松地实现实时更新、即时通知和实时数据传输等功能,提供更好的用户体验。

🎨 2. 如何使用 WebSockets API

WebSockets API 的使用相对简单,只需要几个基本步骤:

  1. 「建立 WebSocket 连接」

在客户端代码中,使用 JavaScript 创建一个 WebSocket 对象,并通过 WebSocket URL 建立与服务器的连接。

const socket = new WebSocket("ws://example.com/socket");
  1. 「处理连接事件」

在连接建立后,WebSocket 对象会触发不同的事件,我们可以监听这些事件来处理连接状态和接收数据。

socket.onopen = () => {console.log("WebSocket 连接已建立");
};socket.onmessage = (event) => {console.log("收到消息:", event.data);
};socket.onclose = () => {console.log("WebSocket 连接已关闭");
};
  1. 「发送和接收数据」

通过 WebSocket 对象的 send() 方法发送数据到服务器,服务器可以使用 send() 方法将数据发送给客户端。

// 发送数据
socket.send("Hello, Server!");// 接收数据
socket.onmessage = (event) => {console.log("收到消息:", event.data);
};
  1. 「关闭连接」

当不再需要使用 WebSocket 连接时,可以通过调用 WebSocket 对象的 close() 方法来关闭连接。

socket.close();

🧭 3. WebSockets API 的实际应用

WebSockets API 在许多实际应用中发挥着重要作用。下面是几个常见的应用场景:

3.1 实时聊天应用

WebSockets 可以用于构建实时聊天应用,其中用户可以实时地发送和接收消息。通过建立持久的 WebSocket 连接,用户可以即时收到其他用户发送的消息,从而实现实时的聊天体验。

// 客户端代码
const socket = new WebSocket("ws://example.com/chat");socket.onmessage = (event) => {const message = JSON.parse(event.data);displayMessage(message);
};function sendMessage(message) {socket.send(JSON.stringify(message));
}

3.2 实时数据监控

WebSockets 可以用于监控实时数据的变化。例如,一个实时股票市场监控应用可以通过 WebSocket 连接获取实时的股票价格,并将其实时显示给用户。

// 客户端代码
const socket = new WebSocket("ws://example.com/stocks");socket.onmessage = (event) => {const stockData = JSON.parse(event.data);displayStockPrices(stockData);
};

3.3 游戏开发

WebSockets API 为多人游戏开发提供了强大的基础。游戏服务器可以使用 WebSockets 与客户端建立双向通信,并实时传输游戏状态和玩家的动作。

// 客户端代码
const socket = new WebSocket("ws://example.com/game");socket.onmessage = (event) => {const gameData = JSON.parse(event.data);updateGame(gameData);
};function sendPlayerAction(action) {socket.send(JSON.stringify(action));
}

📋 4. 兼容性和优缺点

4.1 兼容性

以下是 WebSockets API 的兼容性列表,包含了主流浏览器及其支持的最低版本:

  • Chrome 4+✅

  • Firefox 4+✅

  • Safari 5+✅

  • Edge 12+✅

  • Opera 11.5+✅

  • Internet Explorer 10+✅

  • iOS Safari 4.2+✅

  • Android Browser 4.4+✅

  • Chrome for Android 33+✅

  • Firefox for Android 4+✅

cbd71a9892071882b3d7d0583afda24f.png

可以在 Can I use[1] 网站上查看 WebSockets API 的兼容性详情。

4.2 优缺点

WebSockets API 具有以下优点:

  • 「实时性」

通过建立持久连接,实现「实时数据传输」「双向通信」

  • 「较低的延迟」

相比传统的轮询机制,WebSockets 可以「减少无效的请求和响应」,降低延迟。

  • 「节省带宽」

由于「不需要频繁的请求和响应」,WebSockets 在传输数据方面更加高效。

然而,WebSockets API 也有一些缺点:

  • 「兼容性问题」

尽管现代浏览器广泛支持 WebSockets,但某些旧版本浏览器可能不支持或存在一些限制。在设计应用程序时,需要考虑到兼容性问题,并提供备选方案来处理不支持 WebSockets 的情况。

  • 「服务器开销」

与传统的 HTTP 请求-响应模式相比,WebSockets 需要服务器维护持久连接,这可能增加服务器的负载。

  • 「安全性考虑」

由于 WebSockets 允许服务器主动推送数据到客户端,因此需要仔细考虑安全性问题,防止潜在的安全漏洞。

4.3 工具推荐

推荐几个常用工具:

  • Socket.IO[2] 58.2K⭐

一个面向实时应用程序的 JavaScript 框架,提供了跨浏览器的双向通信。它支持实时聊天、实时分析和实时协作等场景。

  • ws[3] 19.8K⭐

一个简单易用的 WebSocket 客户端和服务器库,适用于 Node.js。它提供了基本的 WebSocket 功能,并支持自定义扩展。

  • uWebSockets[4] 15.4K⭐

一个快速、轻量级的 WebSocket 库,可用于构建高性能的实时应用程序。它提供了简单易用的接口,并支持多线程和事件驱动的架构。

  • SignalR[5] 8.9K⭐

一个为 ASP.NET 开发人员提供的实时 Web 功能库,可在浏览器和服务器之间建立双向通信。它支持多种客户端技术,包括 JavaScript、.NET 和 Xamarin。

  • sockjs-client[6] 8.2K⭐

一个用于创建跨浏览器实时应用程序的 JavaScript 库,它提供了类似 WebSocket 的 API,并在不支持 WebSocket 的浏览器中使用轮询技术进行回退。

👍 5. 使用建议和注意事项

以下是一些使用建议和注意事项:

  • 「考虑兼容性」

在设计和实施应用程序时,需要考虑到不同浏览器和平台的兼容性,并提供备选方案来处理不支持 WebSockets 的情况。

  • 「处理连接中断」

在客户端代码中,需要处理连接中断和错误的情况,例如网络故障或服务器断开连接。可以通过监听 oncloseonerror 事件来捕获这些情况。

  • 「安全性措施」

确保对 WebSocket 连接进行适当的安全性措施,以防止潜在的安全漏洞和攻击。使用安全的连接(wss://)和合适的认证和授权机制。

  • 「考虑服务器负载」

由于 WebSockets 需要维护持久连接,服务器的负载可能会增加。在设计服务器架构时,需考虑负载均衡和扩展性。

  • 「数据传输量控制」

注意控制数据传输量,避免过多的数据传输对带宽和性能产生负面影响。

🍭 6. 总结

WebSockets API 为实时性和双向通信提供了便捷的解决方案。通过使用 WebSockets,开发者可以轻松构建实时聊天应用、实时数据监控和多人游戏等应用程序。WebSockets API 的广泛支持和强大功能使其成为现代 Web 开发中不可或缺的一部分。通过合理的使用和注意事项,我们可以充分利用 WebSockets 实现更好的用户体验和功能。

🎯 7. 拓展阅读

  • WebSockets API 文档[7]

  • WebSockets 兼容性[8]

  • Introducing WebSockets - Bringing Sockets to the Web[9]

Reference

[1]

Can I use: https://caniuse.com/?search=websockets

[2]

Socket.IO: https://socket.io/

[3]

ws: https://github.com/websockets/ws

[4]

uWebSockets: https://github.com/uWebSockets/uWebSockets

[5]

SignalR: https://github.com/SignalR/SignalR

[6]

sockjs-client: https://github.com/sockjs/sockjs-client

[7]

WebSockets API 文档: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket

[8]

WebSockets 兼容性: https://caniuse.com/websockets

[9]

Introducing WebSockets - Bringing Sockets to the Web: https://web.dev/websockets-basics/

往期回顾

#

如何使用 TypeScript 开发 React 函数式组件?

#

11 个需要避免的 React 错误用法

#

6 个 Vue3 开发必备的 VSCode 插件

#

3 款非常实用的 Node.js 版本管理工具

#

6 个你必须明白 Vue3 的 ref 和 reactive 问题

#

6 个意想不到的 JavaScript 问题

#

试着换个角度理解低代码平台设计的本质

4ecdb1c50918701d7a7a6ffc58072049.gif

回复“加群”,一起学习进步


http://www.ppmy.cn/news/136775.html

相关文章

桌面显卡天梯图2023年2月 台式机显卡天梯图2023

1、NVIDIA GeForce RTX 3090 Ti 24GB。 2、NVIDIA GeForce RTX 3090 24GB。 3、NVIDIA GeForce RTX 3080 Ti 12GB。 4、AMD Radeon RX 6900XT 16GB。 5、NVIDIA GeForce RTX 3080 12GB。 6、AMD Radeon RX 6800XT 16GB。 组装电脑怎么搭配显卡更合适这些点很重要看过你就懂了 h…

显卡功耗天梯图 2023年显卡功耗排行天梯图

一、目前比较主流的显卡功耗排行榜   首先先给大家列举当前比较主流的台式电脑显卡功耗表,从下表可见,N卡功耗最高的显卡RTX 3090Ti功耗450W,AMD最强的显卡RX6900XT水冷板功耗330W。该功耗为官方公布的显卡最大功耗,非满载功耗&…

加速神器

事半功倍往往是我们追求的效果,最近使用了迅雷下载才知道什么是事半工倍。已经没有跟上时代进步的步伐啊,复制想要下载东西的链接到迅雷里面,曾经的一个小时现在的几分钟,对于我们搞深度学习的非常有用。 当打开迅雷之后&#xf…

pp加速器简易去广告

pp加速器简易去广告方法: 1、搜索AdConfig.ini和AdList6.Xml并删除其文件夹内的所有内容 2、新建 AdConfig.ini和AdList6.Xml并且设置文件属性为“只读”。 之后再不用开机忍受pplive那烦人的广告啦~~ 转载于:https://my.oschina.net/riseworlds/blog/696561

免费使用的加速器

薄荷加速器 免费golink加速器 免费QAQGame加速器 免费迅龙加速器 每天5小时普通会员大鹏加速器 免费 转载于:https://www.cnblogs.com/stemon/p/11199579.html

2022.12.28雷神加速器更新问题

一直不开始更新,等了十多分钟。 解决方法:打开任务管理器,关闭雷神加速器后台,然后立马开始更新,几秒后进入。 昨天晚上才用了雷神加速器,结果今天的更新搞的我等了半天,期间重开了几次都这样&…

网页加速器1.0.5.6 免费版

介绍 dns网页加速器(SetDns优化器)是一款专业的网页加速工具。dns网页加速器可以帮助您加速网页打开速度,软件操作简单,使用方便,不需要安装就可以使用。PC下载网为您提供dns网页加速器下载,欢迎前来下载。 下载链接 http://w…

聚丙烯(PP)滤袋

材 质 : 聚丙烯(PP) 结 构 : 深层三维过滤材料,100%纯纤维以针刺方式形成立体、高度蓬松的三维深度、迂回曲折的过滤层。钛棒过滤器其特点是纤维组织疏松,高率增加了杂质的容载量,该种纤维材料是属复式截流模式&#x…