WebSockets 是一种全双工通信协议,允许客户端和服务器之间进行实时的双向通信。在实时通信方面,WebSockets 是一种非常有用的技术,它可以使我们的应用程序更加响应,更加实时。
Fastify 是一个高效、低开销、可扩展的 Node.js Web 框架,它非常适合构建高性能的 Web 应用程序。 Fastify 提供了一个非常优雅的方法来处理 WebSockets。 在本文中,我们将学习如何在 Fastify 中使用 WebSockets 来构建实时应用程序。
安装 Fastify
首先,我们需要安装 Fastify。可以使用下面的命令在本地安装它:
npm install fastify -S
启用 WebSockets
Fastify 提供了 fastify-websocket 库,它可以帮助我们轻松地启用 WebSockets。
使用以下命令安装 fastify-websocket:
npm install fastify-websocket -S
在 Fastify 中启用 WebSockets 非常简单,只需将 fastify-websocket 插件包含在启动代码中。 例如:
// javascriptcn.com code example const fastify = require('fastify')() const WebSocket = require('fastify-websocket') fastify.register(WebSocket) const handleConnection = (socket) => { console.log('Socket connected') socket.on('message', (message) => { console.log(`Received message: ${message}`) socket.send(`You said: ${message}`) }) socket.on('close', () => { console.log('Socket closed') }) } fastify.get('/socket', { websocket: true }, handleConnection) fastify.listen(3000, (err) => { if (err) throw err console.log(`Server listening on ${fastify.server.address().port}`) })
在上面的代码中,我们包含了 fastify-websocket 插件,并将 handleConnection 函数注册为将处理 WebSocket 连接的回调函数。 我们还定义了 Fastify 路由来指示在路径 /socket 上服务我们的 WebSocket。
在 handleConnection 函数中,我们打印出连接的状态,并从客户端接收消息,打印它们并将它们发送回客户端。
在客户端使用 WebSockets
在客户端,我们可以使用浏览器的 WebSocket 对象与 Fastify 服务器进行通信。
在下面的示例中,我们通过 HTML 和 JavaScript 创建了一个 WebSocket 连接,然后从服务器接收和发送消息:
// javascriptcn.com code example <!DOCTYPE html> <html> <head> <title>WebSocket Example</title> <script> const socket = new WebSocket('ws://' + window.location.hostname + ':3000/socket') socket.onopen = () => { console.log('Socket opened') socket.send('Hello, server') } socket.onmessage = (message) => { console.log(`Received message: ${message.data}`) } </script> </head> <body> WebSocket Example </body> </html>
在上面的代码中,我们创建了一个 WebSocket 对象并使用它连接到我们的 Fastify 服务器。 我们在 WebSocket 打开时发送一个消息,并在收到消息时使用 console.log 打印它。
结论
在本文中,我们学习了如何在 Fastify 中使用 WebSockets。 我们在 Fastify 中启用了 WebSockets,并在客户端中使用了 WebSockets 连接到服务器。 我们还看到了如何处理来自客户端的消息和断开连接。 通过在 Fastify 中使用 WebSockets,我们可以创建实时的双向通信应用程序,这使得应用程序更加实时和响应。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6729777b2e7021665e24947c