Deno WebSockets 的使用技巧
在前端开发中,WebSocket 是一种非常重要的通信协议,可以实现服务端和客户端之间的实时通信。Deno 是一个新兴的后端 JavaScript 运行时环境,具有高效、安全、简单等特性。在 Deno 中使用 WebSocket,可以使用内置模块 std/ws
来实现 WebSocket 功能,本文将介绍如何使用 Deno WebSockets,以及一些使用技巧和注意事项。
Deno WebSockets 的基本使用方法
在 Deno 环境中,我们可以通过 Deno.listen()
方法来创建一个 WebSocket 服务器,代码示例如下:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- ---------------------- --------------------- ---------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- ---------------------- ------ -- ------- -- -------- --- ----- ------ --- -- ------- - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- -------- -- ---------------------- ------------ ----- -- - --------------------- -- ------ ---------- --------- ----- ------------- ------- --- --- --- - ----- -------- -------------------------- ---------- - ---------------------- ------------- --- - --- ----- ------ -- -- ---------- - -- ------- -- --- --------- - --------------------- -- ---- ----- ------------------ -------- ---- -------- -------- - ---- -- --- ---------- ----------- - ------------------- -------- -- ---- - ---- -- -------------------------- - ----- -- ----- - --- ----------------- --------- ------- ------- ----- ------------------ ----------------- ----------- - ---- -- --------------------------- - ----- - ----- ------ - - --- ---------------------- ------ ---- ----- ------- --- ------- ------------ - - - ----- ----- - --------------------- -- ------- ------ --------- -- --------------------- - ----- ------------------------------------------- - - -
上述代码创建了一个 WebSocket 服务器,并且定义了一个 handleWebSocket()
函数来处理 WebSocket 连接。在 handleWebSocket()
函数中,我们可以接收到客户端发送的消息,并通过 webSocket.send()
方法回复客户端消息。
允许跨域访问
如果客户端和服务器不在同一域名下,就需要开启 CORS 跨域访问功能,代码示例如下:
-- -------------------- ---- ------- ----- -------- -------------------------- ---------- - ------------------- ---------------------- ------------- --- - --- ----- ------ -- -- ---------- - -- ------- -- --- --------- - --------------------- -- ---- ----- ------------------ -------- ---- -------- -------- - ---- -- --- ---------- ----------- - ------------------- -------- -- ---- - ---- -- -------------------------- - ----- -- ----- - --- ----------------- --------- ------- ------- ----- ------------------ ----------------- ----------- - ---- -- --------------------------- - ----- - ----- ------ - - --- ---------------------- ------ ---- ----- ------- --- ------- ------------ - - - ----- ----- - --------------------- -- ------- ------ --------- -- --------------------- - ----- ------------------------------------------- - - - ----- -------- ------ - ----- ------ - ------- ----- ---- --- ---------------------- ------ -- ------- -- -------- --- ----- ------ --- -- ------- - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----- --------- - ----- ----------------- ----- ---------- ---------- -------- --- ----- ------ - ---------------------- -- ------- --- ------------------------ - --------------------- ------- ------------ ----- ------------------ - ---- - --------------------------- - - - ----- -------
如果不开启 CORS 跨域访问功能,会报出以下错误:
VM1078:6 Access to WebSocket at 'ws://localhost:3000/' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
心跳检测
在 WebSocket 通信中,经常需要进行心跳检测,以确保连接状态。可以使用 setInterval()
方法来实现心跳检测,代码示例如下:
-- -------------------- ---- ------- ----- -------- -------------------------- ---------- - ------------------- ---------------------- ------------- ----------------- -- -- - -- --------------------- --- --------------- - ----- ----------------- - -- ------ --- - --- ----- ------ -- -- ---------- - -- ------- -- --- --------- - --------------------- -- ---- ----- ------------------ -------- ---- -------- -------- - ---- -- --- ---------- ----------- - ------------------- -------- -- ---- - ---- -- -------------------------- - ----- -- ----- - --- ----------------- --------- ------- ------- ----- ------------------ ----------------- ----------- - ---- -- --------------------------- - ----- - ----- ------ - - --- ---------------------- ------ ---- ----- ------- --- ------- ------------ - - - ----- ----- - --------------------- -- ------- ------ --------- -- --------------------- - ----- ------------------------------------------- - - -
上述代码中,我们使用 setInterval()
方法每隔 5 秒发送一次 ping,以检测客户端和服务端之间的连接状态。
自定义协议
WebSocket 协议是一个支持自定义协议的协议,可以通过传递参数来实现自定义协议。代码示例如下:
-- -------------------- ---- ------- ------ - --------------- - ---- ---------------------------------- ----- -------- -------------------------- ---------- - ----- ---------- - --------------------- --------------------------- ---------------------- --------- ---- -------- ----------------- - ----- ------ - ------------- ----- ---- --- ---------------------- ------ -- ------- -- -------- --- ----- ------ ---- -- ------- - ----- -------- - --------------------- ----- - -------- -- ---------- -- --------- - - ----- ----------------------- ----- -------- - -------------------------------------- ----- --------- - ----- ----------------- ----- ---------- ---------- -------- --------- --- --------------------------- -
上述代码中,我们使用 acceptWebSocket()
方法,并在其中传递 protocol
参数来实现自定义协议。
总结
本文介绍了在 Deno 环境中使用 WebSocket 的基本使用方法和一些使用技巧和注意事项。通过学习本文,读者可以了解并掌握使用 Deno WebSocket 的方法,同时也可以学到一些实用技巧和注意事项,帮助读者更加高效地使用 Deno WebSocket 实现客户端和服务端之间的实时通信。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64dddc33f6b2d6eab392324a