客户端配置
🎨 客户端配置
Pusher SDK
Pusher 客户端与 soketi 实现的 WebSocket 协议完全兼容,这意味着你可以轻松利用 private 频道、presence 频道和客户端事件等惊人的功能。你只需将兼容 Pusher 的客户端指向 soketi 的服务器地址:
const PusherJS = require('pusher-js');
let client = new PusherJS('app-key', {
wsHost: '127.0.0.1',
wsPort: 6001,
forceTLS: false,
encrypted: true,
disableStats: true,
enabledTransports: ['ws', 'wss'],
});
client.subscribe('chat-room').bind('message', (message) => {
alert(`${message.sender} says: ${message.content}`);
});
确保
enabledTransports
被设置为['ws', 'wss']
。否则,客户端将尝试其他的传输方式,如 XHR 轮询,在连接错误的情况下,soketi 并不支持。
下一步
SSL 配置
当在 SSL 模式下运行服务器时,你可以考虑将 forceTLS
客户端选项设置为 true
。当这个选项被设置为 true
时,客户端将连接到wss
协议而不是 ws
:
const PusherJS = require('pusher-js');
let client = new PusherJS('app-key', {
...
wssHost: '127.0.0.1',
wssPort: 6001,
forceTLS: true,
enabledTransports: ['wss'],
...
});
加密 Private 频道
Pusher 加密的 Private 频道 也被支持,这意味着对于 private 频道,你可以在你的客户端和后端应用中对称地加密你的数据,soketi 根本不知道实际的数据设置是什么,只是像一个搬运工一样行事。
const PusherJS = require('pusher-js');
let client = new PusherJS('app-key', {
...
encryptionMasterKeyBase64: "YOUR_MASTER_KEY", // 用例如 'openssl rand -base64 32' 来生成这个
...
});
client.subscribe('private-encrypted-top-secret-room').bind('message', (message) => {
// 该信息对 soketi 来说是不可知的
});
Laravel Echo
Laravel Echo 与 PusherJS 库兼容。因此, 它的配置类似于 PusherJS 客户端的典型配置,如上一节文档中的例子配置:
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
let laravelEcho = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: process.env.MIX_PUSHER_HOST,
wsPort: process.env.MIX_PUSHER_PORT,
wssPort: process.env.MIX_PUSHER_PORT,
forceTLS: false,
encrypted: true,
disableStats: true,
enabledTransports: ['ws', 'wss'],
});
laravelEcho.private(`orders.${orderId}`)
.listen('OrderShipmentStatusUpdated', (e) => {
console.log(e.order);
});
确保
enabledTransports
被设置为['ws', 'wss']
。如果没有设置,在连接失败的情况下,客户端将尝试其他传输方式,如 XHR 轮询,而 soketi 并不支持。
MIX_*
环境变量通常在你的Laravel应用程序的 .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}"
关于 SSL 的配置,请参阅 Pusher SDK 的 SSL 实例。
推荐文章: