如何在 Raspberry Pi 上托管 Socket.IO 服务器

最近,我正在使用 React 和 Node.js 开发一个聊天应用程序,该应用程序使用 Socket.io 进行实时消息传输。在开发过程中,我面临着如何为 Socket.IO 找到一个可靠而免费的服务器托管解决方案的挑战。在探索了各种方案后,我意识到将服务器托管在树莓派(Raspberry Pi)上是一个既高效又经济的选择。

在本文中,将探讨如何为 Socket.Io 服务器设置和配置 Raspberry Pi。

前提条件

  • Raspberry Pi(我使用的是 Raspberry Pi 3 Model B+)。
  • 有关 Docker 的基本知识。
  • 基本的 Linux 命令。

步骤 1:下载 Raspberry Pi Imager。

如何在 Raspberry Pi 上托管 Socket.IO 服务器
  • 如果想要快速图形用户界面与 Raspberry Pi 交互,请下载 Raspberry Pi OS(64 位)
  • 如果喜欢使用 bash,请下载 Raspberry Pi OS Lite 的精简版(64 位)

步骤 2:连接到你的 Raspberry Pi:SSH 或 HDMI

当访问你的 Raspberry Pi 时,你有两个主要选择。

  • 使用ssh,它允许你通过网络远程连接到你的 Raspberry Pi
  • 或者可以直接插入 HDMI 以获得视觉显示和键盘,以实现更传统的设置

步骤 3:在 Raspberry Pi 上安装 Docker

步骤 4:在 Docker 容器中运行 Nodejs 服务器(socket.io)

  • 如果已经熟悉 Docker 和容器,下一步是使用 Node.js 服务器启动 Docker 容器。这允许您在隔离环境中运行应用程序。例如,不要忘记在容器中公开端口。
sudo docker run -it --name socket-container --network my-bridge-network -p 9000:9000 <your-image-name>
  • 如果不喜欢终端堵塞,可使用 -d 标志在分离模式下运行容器
sudo docker run -d --name socket-container --network my-bridge-network -p 9000:9000 <your-image-name>
  • 容器在隔离状态下运行,不会自动共享网络端口。不过,通过使用桥接网络,我们可以创建一个共享网络,让容器可以相互通信并监听指定端口。
  • 使用以下命令可以访问容器内的日志
sudo docker logs <container_name>

步骤 5:创建 Cloudflare 隧道

sudo docker run -d --name cloudflared-container cloudflare/cloudflared:latest tunnel --url http://socket-container
  • 再次使用 logs 命令访问 Cloudflare 容器内的日志
sudo docker logs <container_name>

你可能会看到类似这样的内容

如何在 Raspberry Pi 上托管 Socket.IO 服务器

步骤 6:连接到前端

  • Cloudflare 创建的链接会建立一个隧道,将流量路由到您的本地 IP 地址。
  • 在您的 react 应用程序或任何前端应用程序中使用代表 websocket secure 的 wss。

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/53188.html

(0)

相关推荐

发表回复

登录后才能评论