在 Deno 中,WebSocket 是一项强大的技术,它带来了实时通信和事件触发的可能性。通过 WebSocket,你可以在服务器和客户端之间建立一个实时的、双向的通信管道。本文将介绍 Deno 中的 WebSocket 实现,包括如何创建和连接 WebSocket、如何发送和接收消息以及如何利用 WebSocket 构建实时通信应用程序。
WebSocket 简介
WebSocket 是 HTML5 中的一种新协议,它可以实现浏览器与服务器之间的实时通信。在传统的 HTTP 协议中,客户端向服务器发送请求后,服务器才能够向客户端发送响应。而 WebSocket 协议则打破了这个限制,它可以在客户端和服务器之间建立一个双向的通信管道,实时地传输数据。
在 WebSocket 中,客户端和服务器之间建立一个 WebSocket 连接,连接建立后,客户端和服务器就可以通过 WebSocket 连接相互发送消息。WebSocket 采用基于事件的编程模型,它可以触发 onopen、onmessage、onerror 和 onclose 四种事件,分别表示 WebSocket 连接已建立、接收到消息、发生错误和连接已关闭。
在 Deno 中创建和连接 WebSocket
在 Deno 中,使用 WebSocket API 可以非常方便地创建和连接 WebSocket。可以使用以下命令将 Deno 安装在本地:
curl -fsSL https://deno.land/x/install/install.sh | sh
安装成功后,可以创建一个 Deno 项目,并创建一个 main.ts 文件,用于编写 WebSocket 应用程序。以下是在 Deno 中创建 WebSocket 的示例代码:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- --------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- -------------------------------------- --- ----- ------ --- -- ------- - -- -------- --- ------ - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- -------- -- ---------------------- ------------ -- - --------------------- -- ------ ---------- --------- ------------- ------- --- --- --- - ---- - ------------- ------- ---- ----- - --------- ----- ------ ------ ----- --------------- -- ----------- --------- --------------- ------- ------ ---------- ---- --------------- -------- ----- -- - --- ------------------------------------ --------------------------- -------- ------- - ---------------------- ------------ --- ------------------------------ -------- ------- - ---------------------- ------- --------- -- ------------ --- --------- ------- ------- -- --- - - ----- -------- ------------------- ---------- - ---------------------- ------------ --- ----- ------ ----- -- --- - -- ------- ----- --- --------- - ------------------- --------- ------- --------------- - ---- -- ------ ---------- ----------- - ------------------- --------- ------- --------------- - - -
上面的代码创建了一个 HTTP 服务器和一个 WebSocket 服务器。当客户端访问 http://localhost:8080/ 时,返回一个包含 JavaScript 代码的 HTML 页面,该代码将建立一个 WebSocket 连接。当客户端与 WebSocket 服务器建立连接时,WebSocket 服务器将发送一条消息,客户端可以在 console 中看到这条消息。
如何发送和接收消息
当 WebSocket 连接建立之后,可以通过 WebSocket.send() 方法向服务器发送消息,以下是一个简单的发送消息的示例代码:
ws.send("hello, world!");
对于接收到的消息,可以通过 WebSocket.onmessage 事件进行处理,以下是一个简单的接收消息的示例代码:
ws.addEventListener("message", function (event) { console.log("WebSocket message received: ", event.data); });
WebSocket 的应用
使用 WebSocket,可以构建出真正的实时通信应用程序。以下是一个简单的聊天室应用程序的示例代码:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- --------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- -------------------------------------- --- ----- ------ --- -- ------- - -- -------- --- ------ - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- -------- -- -------------- ------------------- ---------- - ---------------------- ------------ ------------------------------ -------- ------- - ---------------------- ------- --------- -- ------------ ---------------------- --- ---------------- -- --- ---- -------- -------------- -- ------------ -- - --------------------- -- ------ ---------- --------- ------------- ------- --- --- --- - ---- - ------------- ------- ---- ----- - --------- ----- ------ ------ ----- --------------- -- ----------- --------- --------------- ------- ------ ----------- -- --- ---- ---------- ---- ------------------------- ----- --------------- ------ ----------- ----------------- -- ------- --------------------------- ------- -------- ----- -- - --- ------------------------------------ --------------------------- -------- ------- - ---------------------- ------------ --- ------------------------------ -------- ------- - ----- ------------ - ----------------------------------------- ----- --------- - ---------------------------- --------------------- - ----------- ------------------------------------ --- ----- -------- - ------------------------------------- ----- ---------------- - ---------------------------------------- ----------------------------------- -------- ------- - ----------------------- -------------------------------- ---------------------- - --- --- --------- ------- ------- -- --- - - ----- ------- - --- ----------------- -------- ----------------- ---------- - -------------------- - -------- ------------------ ------- - ------------------------ -- ---------------------- -
上述代码创建了一个聊天室应用程序,客户端可以在 WebSocket 连接上发送消息,这些消息可以被广播到其他所有客户端。如果你在不同的浏览器中打开 http://localhost:8080/,你可以看到这些浏览器之间可以实时通信。这个应用程序非常简单,不能处理多个房间、用户身份验证等复杂的应用程序逻辑,但是已经可以满足基本的实时聊天应用程序的需求。
总结
WebSocket 是一个非常强大的技术,可以实现实时通信和事件触发。在 Deno 中,WebSocket 可以非常方便地使用,我们可以使用 Deno 提供的 WebSocket API 构建出真正的实时通信应用程序。本文介绍了在 Deno 中创建和连接 WebSocket、如何发送和接收消息以及如何利用 WebSocket 构建实时通信应用程序。通过了解 WebSocket,你可以掌握实时通信技术,并构建出更加强大的实时通信应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6457a45d968c7c53b0a4741f