WebSocket 是一种实现了全双工通信的协议,可以在客户端和服务器之间建立实时通信的连接,使得数据可以即时地在双方之间传输。在前端开发中,WebSocket 经常被用来实现实时通信、多人在线游戏和在线编程等功能。而在 Deno 中,使用 WebSocket 实现实时通信也非常简单。
建立 WebSocket 连接
在 Deno 中,使用 WebSocket 与建立 HTTP 连接类似,只需实例化一个 WebSocket 类并通过指定 URL 来与服务器建立连接。下面是一个建立 WebSocket 连接的示例代码:
import io from "https://deno.land/std/io/mod.ts"; import { WebSocket } from "https://deno.land/std/ws/mod.ts"; const socket = new WebSocket("ws://localhost:8080/ws");
这段代码中,我们首先导入了 io 和 WebSocket 模块,然后通过实例化一个 WebSocket 类并指定 URL “ws://localhost:8080/ws” 来建立了一个 WebSocket 连接。其中,“ws” 表示 WebSocket 协议,“localhost” 表示服务器地址,“8080” 表示服务器端口号,“/ws” 表示服务器的 WebSocket 服务路径。
发送和接收消息
建立好 WebSocket 连接后,我们就可以通过发送和接收消息来实现实时通信了。WebSocket 提供了 send() 方法和 onmessage 事件来实现消息的发送和接收。下面是一个简单的示例代码:
-- -------------------- ---- ------- ------ -- ---- ---------------------------------- ------ - --------- - ---- ---------------------------------- ----- ------ - --- ------------------------------------ ------------- - -- -- - ---------------------- --------- --------------------- -- ---------------- - ------- -- - --------------------- ------------ --
在这段代码中,我们通过 onopen 事件在 WebSocket 连接建立后发送了一条消息“hello”,并且通过 onmessage 事件在接收到服务器返回的消息后进行了打印。
实现多人在线聊天室
除了简单的消息发送和接收外,WebSocket 还可以实现多人在线聊天室等复杂的功能。下面是一个使用 WebSocket 实现多人在线聊天室的示例代码:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- --------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- --------------------------------------------- ----- ------- - --- ----------------- ----- -------- ----------------------- ---------- - -------------------- --- ----- ------ ----- -- ------- - -- ------- ----- --- --------- - ----------------- - - ----------------------- - ----- -------- ------------------ ------- - --- ------ ------ -- -------- - ----- --------------------- - - --- ----- ------ ------- -- ------- - -- ------------ --- ------ - ----- - ----- -- ---------- -- ---------- ------- - - -------- ----------------- ----- ---------- ---------- -------- ------------------------- - -
这段代码中,我们首先启动了一个 HTTP 服务器并监听 WebSocket 连接请求。当有连接请求时,我们使用 acceptWebSocket() 方法来创建一个 WebSocket 实例,并将它添加到 sockets 集合中,然后通过 for 循环等待来自客户端的消息。如果收到了字符串类型的消息,就调用 broadcast() 方法把消息发送给聊天室中的所有用户。
总结
本文介绍了如何在 Deno 中使用 WebSocket 实现实时通信,包括建立 WebSocket 连接、发送和接收消息以及实现多人在线聊天室等复杂功能。通过这些示例代码,我们可以更好地理解 WebSocket 的基本原理和使用方法,并在实际开发中应用它来实现更丰富多彩的功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6497e91748841e98944f21d7