前言
在前端开发中,使用 Websockets 技术实现实时通讯功能已经成为了一种常见的需求,而 Fastify 是一个高效且易用的 Node.js Web 开发框架,它的设计目标是提供一种基于 TypeScript 构建 Web 应用程序的最佳方式。对于需要使用 Websockets 技术来搭建聊天室等实时通讯功能的应用,Fastify 也提供了较好的支持,下面我们将详细介绍如何在 Fastify 中使用 Websockets 技术来搭建一个聊天室。
准备工作
在开始介绍如何在 Fastify 中使用 Websockets 技术来搭建聊天室之前,我们需要先了解以下几个工具和技术:
- Node.js:Fastify 是基于 Node.js 的,因此需要在本地开发环境中安装 Node.js。
- Fastify:需要在本地项目中安装 Fastify 和 fastify-websocket 库。
- WebSocket:WebSocket 是一种网络协议,用于实现客户端和服务器之间的全双工通信。
如果你还没有安装 Node.js,可以在官网上下载安装:https://nodejs.org/en/。
可以使用如下命令来安装 Fastify 和 fastify-websocket:
npm install fastify fastify-websocket
搭建聊天室
创建 Fastify 服务器
首先,我们需要创建一个 Fastify 服务器实例,并监听到指定端口:
const fastify = require('fastify')(); fastify.listen(3000, err => { if (err) throw err; console.log(`server listening on ${fastify.server.address().port}`); });
引入 fastify-websocket 插件
为了能够使用 Fastify 的 websocket 功能,我们需要在服务器实例中注册 fastify-websocket 插件:
const fastify = require('fastify')(); fastify.register(require('fastify-websocket')); fastify.listen(3000, err => { if (err) throw err; console.log(`server listening on ${fastify.server.address().port}`); });
创建 WebSocket 路由
创建 WebSocket 路由需要使用到 register
方法和 get
方法。在 register
方法内部再使用 get
方法创建 WebSocket 路由:
-- -------------------- ---- ------- ----- ------- - --------------------- ----------------------------------------------- -------------------------- ----- ----- -- - ------------------ - ---------- ---- -- ------------ ---- -- - ------------------- ------------ -- -- --------- ------- --- ------- --- -------------------- --- -- - -- ----- ----- ---- ------------------- --------- -- ----------------------------------- ---
在 get
方法中,我们要指定 websocket: true
,这是告诉 Fastify 该路由是一个 WebSocket 路由,从而允许 Fastify 开启 WebSocket 功能。
添加 WebSocket 事件监听器
在 WebSocket 路由中,我们需要添加一些 WebSocket 事件的监听器,例如 on
、send
、disconnect
等。
在下面的示例中,我们一共添加了两个事件:on
事件和 disconnect
事件。on
事件是客户端向服务器发送消息时所触发的事件,disconnect
事件是客户端断开连接时所触发的事件。
-- -------------------- ---- ------- ----- ------- - --------------------- ----------------------------------------------- -------------------------- ----- ----- -- - ------------------ - ---------- ---- -- ------------ ---- -- - ------------------- ------------ -- -- --------- ---- -- ------------------------ --- -- - ------------------- -------- --------- -- -------------- ----- ------- - -------------------------------- -- --------- - ---------------------- -- - -- ------------------ --- --------------- - ---------------------------- - --- - --- -- -- --------- ------------ -- ---------------------- -- -- - ------------------- --------------- --- --- ------- --- -------------------- --- -- - -- ----- ----- ---- ------------------- --------- -- ----------------------------------- ---
在 message
事件监听器中,我们通过 fastify.websocketServer.clients
获取到所有连接的客户端,然后将收到的消息广播给所有客户端。
在前端页面中使用 WebSocket
通过以上步骤,我们已经成功在 Fastify 中搭建了一个聊天室,接下来我们需要在前端页面中使用 WebSocket 来连接聊天室。
在前端页面中,我们可以使用 WebSocket 的 onmessage
事件来监听服务器传递过来的消息,并可以使用 send
方法向服务器发送消息:
-- -------------------- ---- ------- ----- -- - --- ------------------------------------ ------------ - ----- -- - ------------------- -------- ---------------- -- ------------------------------------------------------------- -- -- - ----- --- - ------------------------------------------- ------------- ---
总结
在 Fastify 框架中使用 Websockets 搭建聊天室需要以下步骤:
- 创建 Fastify 服务器;
- 引入 fastify-websocket 插件;
- 创建 WebSocket 路由;
- 添加 WebSocket 事件监听器;
- 在前端页面中使用 WebSocket 连接聊天室。
通过以上步骤,我们可以轻松地搭建一个使用 WebSocket 技术的聊天室,从而实现实时通讯等需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ca76b65ad90b6d041b2c69