Soketi 是一个简单、快速且健壮的开源 WebSocket 服务器,使用 TypeScript 编写。它完全兼容 Pusher v7 协议,这使得在使用 Laravel Echo 时可以成为 Pusher 的可行替代品。
在这篇博客文章中,我们将学习如何将 Soketi 部署到由 Laravel Forge 管理的服务器。我们建议在 Forge 中创建此服务器时使用“Web 服务器”服务器类型,因为 Web 服务器包括 Node、NPM 和 Nginx。
打开端口
创建服务器后,我们需要在服务器上打开端口 6001
,以便 PusherJS / Echo 客户端可以连接到我们将要安装的 Soketi 服务器。
要打开端口,请转到 Forge 中的“网络”面板,创建一个名为“Soketi 服务器”的新规则,并将端口设置为 6001
。规则类型应设置为“允许”。
安装 Soketi
在我们能够运行 Soketi 之前,我们需要在服务器上安装它。因为 Soketi 是一个 NPM 包,我们可以运行以下命令来安装它
npm install -g @soketi/soketi
或者,您也可以使用 Yarn 来安装 Soketi。
我们可以通过在终端中运行 soketi start
命令来验证 Soketi 是否已安装。如果 Soketi 未安装或其默认端口 6001
正在使用中,则在执行 start
命令时您可能会收到错误。
配置守护进程
安装 Soketi 后,我们可以在服务器上配置守护进程,使其保持服务运行并在崩溃时重新启动。
让我们转到 Forge,然后导航到服务器的 守护进程 标签页。要创建守护进程,我们需要做几件事情
- 将命令设置为
soketi start
- 将停止秒数更改为
60
- 将停止信号改为
SIGINT
一旦创建,我们就可以通过点击“活动守护进程”表中的守护进程旁边的三个点,然后点击“显示守护进程日志”按钮来验证 Soketi 是否正在运行。
太好了!Soketi 运行得非常好。
有关更详细的设置说明,请参阅 Soketi 文档。您可能需要修改命令以更改驱动程序、启用 SSL 支持、打开调试以及更多。
配置我们的网站
现在已安装和配置了 Soketi,我们可以更新 Laravel 应用程序以连接到我们的 Soketi 服务器。
默认情况下,config/broadcasting.php
配置文件不包含连接到 Soketi 服务器时所需的附加选项。需要更新 pusher
配置。
'connections' => [
// ...
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY', 'app-key'),
'secret' => env('PUSHER_APP_SECRET', 'app-secret'),
'app_id' => env('PUSHER_APP_ID', 'app-id'),
'options' => [
'host' => env('PUSHER_HOST', '127.0.0.1'),
'port' => env('PUSHER_PORT', 6001),
'scheme' => env('PUSHER_SCHEME', 'http'),
'encrypted' => true,
'useTLS' => env('PUSHER_SCHEME') === 'https',
],
],
],
我们还需要更新 .env
文件以包含新的配置细节。
PUSHER_APP_KEY=app-key
PUSHER_APP_ID=app-id
PUSHER_APP_SECRET=app-secret
PUSHER_HOST=127.0.0.1
PUSHER_PORT=6001
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_HOST="${PUSHER_HOST}"
MIX_PUSHER_PORT="${PUSHER_PORT}"
默认情况下,Soketi 使用
app-key
、app-id
和app-secret
凭据启动服务器。您可以使用 Soekti 环境变量来更改这些凭据。
最后,您应该将 PUSHER_HOST
环境变量更改为您的 Forge 服务器 IP 地址。现在,您的项目应能够连接到 Soketi 服务器。
kakad3v 赞了这个文章