后端配置
💻 后端配置
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
选项设置为http
,useTLS
选项为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
选项设置为http
,useTLS
选项为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;
}
推荐文章: