本书未发布

客户端配置

未匹配的标注

🎨 客户端配置

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 实例

下一步

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

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
发起讨论 查看所有版本


暂无话题~