本书未发布

后端配置

未匹配的标注

💻 后端配置

Pusher SDK

你的实时消息基础设施的后端配置将取决于你的应用程序的语言。然而,在这个例子中,我们将展示配置 Pusher PHP SDK 与 soketi 的互动,这应该与其他语言的服务器端 Pusher SDK 的配置相似:

use Pusher\Pusher;

$pusher = new Pusher('app-key', 'app-secret', 'app-id', [
    'host' => '127.0.0.1',
    'port' => 6001,
    'scheme' => 'http',
    'encrypted' => true,
    'useTLS' => false,
]);

要配置 SSL 客户端,你应该将 scheme 选项设置为 httpuseTLS 选项为 true

下一步

加密 Private 频道

Pusher 加密 Private 频道 也被支持,这意味着对于 private 频道,你可以在你的客户端和后端应用中对称地加密你的数据,soketi 根本不知道实际的数据设置是什么,只是像一个搬运工一样行事。

use Pusher\Pusher;

$pusher = new Pusher('app-key', 'app-secret', 'app-id', [
    // ...
    'encryptionMasterKeyBase64' => '...',  // // 用比如说 'openssl rand -base64 32' 来生成
]);

Laravel 广播

当在你的应用程序中使用 Laravel的事件广播 功能时, soketi 更容易配置。首先, 在你的应用程序的 config/broadcasting.php 文件中用以下配置替换默认的 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',
        ],
    ],
],

要配置 SSL 客户端,你应该将 scheme 选项设置为 httpuseTLS 选项为 true

下一步

自签证书

由于 Pusher PHP SDK 的实现变化,自 6.0 版本以来的 SDK 不支持 curl_options;因此,自签的 SSL 证书将无法通过证书验证,因为证书验证不能被禁用。要绕过 SSL 验证,你必须使用 Pusher PHP SDK 版本 5.0.3

Nginx Configuration

在 Nginx 等网络服务器背后提供 soketi,可以让你通过一个特定的主机名访问 soketi 服务器,如 socket.example.com。如果你愿意,你也可以选择让 Nginx 来协商你的SSL连接,而不是向 soketi 提供你的 SSL 证书信息。

下面提供了一个 Nginx 配置的例子;但是,对于你的具体服务器环境,可能需要或需要做一些小的调整:

server {
    listen 6002 ssl http2;
    listen [::]:6002 ssl http2;
    server_name socket.example.com;
    server_tokens off;
    root /home/forge/default/public;

    # FORGE SSL (DO NOT REMOVE!)
    ssl_certificate /path/to/ssl/certificate.crt;
    ssl_certificate_key /path/to/ssl/key.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS_AES_256_GCM_SHA384:TLS-AES-256-GCM-SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS-CHACHA20-POLY1305-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/dhparams.pem;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        proxy_pass             http://127.0.0.1:6001;
        proxy_read_timeout     60;
        proxy_connect_timeout  60;
        proxy_redirect         off;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    access_log off;
    error_log  /var/log/nginx/socket.example.com.log error;
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~