将 Soketi 部署到 Laravel Forge

2022 年 1 月 5 日#forge

Soketi 是一款简单、快速且弹性的开源 WebSocket 服务器,用 Typescript 编写。它与 Pusher v7 协议完全兼容,使其成为使用 Laravel Echo 时 Pusher 的可行替代方案。

在本博文中,我们将学习如何将 Soketi 部署到由 Laravel Forge 管理的服务器。我们建议在 Forge 中创建此服务器时使用“Web 服务器”服务器类型,因为 Web 服务器包含 Node、NPM 和 Nginx。

打开端口

创建服务器后,我们需要在服务器上打开端口 6001,以便 PusherJS / Echo 客户端可以连接到我们稍后将安装的 Soketi 服务器。

要打开端口,请转到 Forge 中的网络面板,创建一个名为“Soketi 服务器”的新规则,并将端口设置为 6001。规则类型应设置为“允许”。

Opening Port 6001

安装 Soketi

在运行 Soketi 之前,我们需要在服务器上安装它。由于 Soketi 是一个 NPM 包,我们可以运行以下命令来安装它

npm install -g @soketi/soketi

或者,您可以使用 Yarn 安装 Soketi。

我们可以通过在终端中运行 soketi start 来验证 Soketi 是否已安装。如果 Soketi 未安装或其默认端口 6001 正在使用中,那么在执行 start 命令时可能会收到错误。

配置守护进程

安装 Soketi 后,我们可以在服务器上配置一个守护进程,该守护进程将使服务保持运行状态,并在其崩溃时重新启动它。

让我们转到 Forge,然后导航到服务器的 **守护进程** 面板。要创建守护进程,我们需要做几件事

  1. 将命令设置为 soketi start
  2. 将停止秒数更改为 60
  3. 将停止信号更改为SIGINT

Creating The Soketi Daemon

创建完成后,我们可以通过点击“活动守护进程”表中守护进程旁边的三个点,然后点击“显示守护进程日志”按钮来验证 Soketi 是否正在运行。

Checking The Soketi Service

太好了!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-keyapp-idapp-secret 凭据启动服务器。您可以使用Soekti 环境变量更改这些凭据。

最后,您应该将PUSHER_HOST 环境变量更改为 Forge 服务器的 IP 地址。您的项目现在应该能够连接到 Soketi 服务器。

阅读我们关于将 Soketi 部署到 Laravel Forge 的系列文章的第 2 部分.

作者:James Brooks

Laravel 工程团队负责人,负责构建ForgeVaporEnvoyer

您可以在TwitterGitHub我的博客上找到我。

关注RSS Feed