随着互联网的普及,实时数据已经成为了大家非常关注的一个问题。比如,当我们想要获取实时的天气情况时,对于前端而言,如何实现数据的实时展示并且确保数据的准确性,是非常重要的。本文将介绍如何在 Deno 中使用 WebSocket 实现实时天气预报。
什么是 WebSocket
WebSocket 是 HTML5 提供的一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得服务器端和客户端之间的数据可以进行实时的双向通信,而无需一遍又一遍地进行 HTTP 轮询请求。相较于传统的 HTTP 协议,WebSocket 降低了网络负载,加快了数据传输的速度,并且在实现实时数据展示方面非常得心应手。
开始实现
1. 前置条件
- Deno 运行时环境
- 天气 API 服务(例如,心知天气)
2. 安装依赖库
我们需要安装一个处理 WebSocket 连接的依赖库 deno-ws,可以使用以下命令进行安装:
deno install -f --unstable --allow-net --allow-read https://deno.land/x/ws/mod.ts
上述命令将会在全局环境下安装 deno-ws 依赖库。
3. 编写服务端代码
// javascriptcn.com 代码示例 import { serve } from "https://deno.land/std/http/server.ts"; import { WebSocket, WebSocketServer } from "https://deno.land/x/ws/mod.ts"; const PORT = 8080; const server = serve({ port: PORT }); console.log(`Server is listening on port ${PORT}`); const wss = new WebSocketServer(8081); wss.on("connection", function (ws: WebSocket) { console.log("New WebSocket connection established."); setInterval(function () { const res = await fetch(`http://api.seniverse.com/v3/weather/now.json?key=<API_KEY>&location=<LOCATION>&language=en`); const data = await res.json(); ws.send(JSON.stringify(data)); }, 60 * 1000); });
上述服务端代码使用 Deno.std.http
模块提供的 serve
函数启动了一个 HTTP 服务器,监听在 8080 端口。当 WebSocket 连接建立之后,我们使用 WebSocketServer
类创建了一个 WebSocket 服务器,并且使用 setInterval
定时发送请求获取天气数据,然后使用 ws.send
方法发送给客户端。
4. 编写客户端代码
现在,我们需要编写一个前端页面,连接服务端上的 WebSocket 并且展示实时天气信息。
// javascriptcn.com 代码示例 <!DOCTYPE html> <html> <head> <title>实时天气预报</title> </head> <body> <div id="weather"></div> <script> const socket = new WebSocket("ws://localhost:8081"); socket.addEventListener("message", function (event) { const data = JSON.parse(event.data); const { location, now } = data.results; const { text, temperature } = now; const weatherDiv = ` <p>${location.name} - ${location.country}</p> <p>天气: ${text},温度: ${temperature}℃</p> `; document.getElementById("weather").innerHTML = weatherDiv; }); </script> </body> </html>
客户端代码中,我们使用 WebSocket
类创建了一个 WebSocket 连接并指定连接的服务端地址为 ws://localhost:8081
。当 WebSocket 连接接收到服务端发送的消息时,我们解析获取到的天气信息,然后将其展示在页面上。
5. 运行项目
现在,我们已经完成了 WebSocket 天气预报的实现,让我们启动 Deno 运行时,运行服务端代码:
deno run --allow-net server.ts
然后,在浏览器中打开客户端代码所在的 HTML 文件即可查看实时天气预报了。
总结
本文介绍了如何在 Deno 中使用 WebSocket 实现实时天气预报。通过学习本文,我们了解到了 WebSocket 的基本原理和优势,并且了解了如何使用 deno-ws 库处理 WebSocket 连接。希望这篇文章能够帮助读者更深入地了解 WebSocket,以及如何在实际应用项目中使用 WebSocket 实现数据实时展示。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6520c30295b1f8cacd83483c