最近,我正在使用 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。
- 在 Ubuntu 或 Windows 上下载Raspberry Pi Imager。
- 如果想要快速图形用户界面与 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 隧道
- 从 docker hub拉取Cloudflare 镜像
- 使用以下命令运行图像
sudo docker run -d --name cloudflared-container cloudflare/cloudflared:latest tunnel --url http://socket-container
- 再次使用 logs 命令访问 Cloudflare 容器内的日志
sudo docker logs <container_name>
你可能会看到类似这样的内容
步骤 6:连接到前端
- Cloudflare 创建的链接会建立一个隧道,将流量路由到您的本地 IP 地址。
- 在您的 react 应用程序或任何前端应用程序中使用代表 websocket secure 的 wss。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/53188.html