介绍
Deno 是一个类似 Node.js 的运行时环境,但比 Node.js 更加安全和高效。WebSockets 是一种基于 TCP 的协议,用于实现双向通信。在 Deno 中使用 WebSockets 可以方便地实现实时通信。
本文将介绍如何使用 Deno 实现 WebSockets。
依赖
使用 Deno 实现 WebSockets 需要以下依赖:
Deno
运行时环境WebSocket
标准库模块
示例代码
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- ---------------------- ---------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- -------------------------------------- --- ----- ------ --- -- ------- - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- -------- -- ---------------------- ------------ ----- -- - --------------------- -- ------ ---------- --------- ----- ------------- ------- --- --- --- - ----- -------- ------------------- ----------- ------------- - ------------------- ------------- --- - --- ----- ------ -- -- --- - -- ------- -- --- --------- - ---------------------- ---- ----- ------------ - ---- -- --- ---------- ----------- - ------------------------ ---- - ---- -- --------------------------- - ----- - ----- ------ - - --- ----------------------- ----- -------- - - - ----- ------- - --------------------- -- ------- ------ ----------- -- -------------- - ----- ------------------------------------ - - -
这段代码实现了一个简单的 WebSocket 服务器,监听本地 8080 端口,接受客户端的连接,收到消息后原封不动地发送回去。客户端的连接可以使用任何支持 WebSocket 的客户端。
解释
服务器代码
import { serve } from "https://deno.land/std/http/server.ts"; import { acceptWebSocket, isWebSocketCloseEvent, WebSocket, } from "https://deno.land/std/ws/mod.ts";
这里导入了 Deno 的 HTTP 服务器和 WebSocket 相关的标准库模块。
const server = serve({ port: 8080 }); console.log("http://localhost:8080/");
创建一个 HTTP 服务器,监听本地 8080 端口,并输出日志。
-- -------------------- ---- ------- --- ----- ------ --- -- ------- - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- -------- -- ---------------------- ------------ ----- -- - --------------------- -- ------ ---------- --------- ----- ------------- ------- --- --- --- -
开始监听请求,如果是 WebSocket 连接,则调用 acceptWebSocket
函数处理连接。
-- -------------------- ---- ------- ----- -------- ------------------- ----------- ------------- - ------------------- ------------- --- - --- ----- ------ -- -- --- - -- ------- -- --- --------- - ---------------------- ---- ----- ------------ - ---- -- --- ---------- ----------- - ------------------------ ---- - ---- -- --------------------------- - ----- - ----- ------ - - --- ----------------------- ----- -------- - - - ----- ------- - --------------------- -- ------- ------ ----------- -- -------------- - ----- ------------------------------------ - - -
处理 WebSocket 连接,输出日志,然后开始循环等待客户端发送消息。收到消息后根据消息类型进行处理。
客户端代码
使用 WebSocket 协议的客户端可以是任意的支持 WebSocket 的客户端。以浏览器为例:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- --------------- -- ---------------- ------------ ------- ------ -- -------------------- --- ----------- -------- ----- -- - --- --------------------------------- --------- - -------- ------- - ---------------------- -------- ------- -- ------------ - -------- ------- - ---------------------- --------- ------- ----- --------- - ----------------------------------- --------------------- - ----------- -- ---------- - -------- ------- - ---------------------- -------- ------- -- --------- ------- -------
这段 HTML 代码创建了一个 WebSocket 连接,连接到本地 8080 端口的 WebSocket 服务器。连接建立后输出日志,并等待服务器发送消息。收到消息后更新页面上的消息框。如果连接关闭,则输出日志。
总结
本文介绍了在 Deno 中使用 WebSockets 的方法,并提供了示例代码。通过本文,你可以了解到 Deno 和 WebSockets 的基本概念和用法,以及如何使用它们在 Deno 中实现实时通信。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64507b9e980a9b385b98239c