@ably/laravel-echo

中文文档
1.0.6发布于 2024/09/26MITTypeScriptESM + CJS零依赖近 30 天下载 2.9万

Laravel Echo 图书馆,用于美丽的 Ably 集成

中文使用文档
文档目录9 节
  1. 导言
  2. 安装
  3. 使用自定义执行与 laravel sanctum/ 支持通道认证合作
  4. 观察频道消息的精通dev-console和离开频道
  5. 成功/未能确认低语
  6. 正式文件
  7. 捐款
  8. 释放进程
  9. 说明

导言

此寄存器为 https://github.com/laravel/echo (英语)。它坚持从基础存储库中获取公共界面方法。 它将定期与基站寄存器同步,以确保所有代码都是最新的. 增加了针对具体情况的执行,以支持本地 强能js。 。 。 .

安装

安装 @ably/laravel-echo 和最新版本的 ably 使用 npm (可插式 lib) .

npm install @ably/laravel-echo [email protected]

Echo 安装后, 您准备在您的应用程序的 JavaScript 中创建新的 Echo 实例 。 做这个的好地方就在下面 resources/js/bootstrap.js 包含在 Laravel 框架中的文件。 默认情况下, Echo 配置已经包含在此文件中; 但是, 默认配置在 bootstrap.js 文件用于 Pusher 。 您可以将配置复制到下面, 将配置切换到 Ably .

import Echo from '@ably/laravel-echo';
import * as Ably from 'ably';

window.Ably = Ably; // make globally accessible to Echo
window.Echo = new Echo({
    broadcaster: 'ably',
});

window.Echo.connector.ably.connection.on(stateChange => {
    if (stateChange.current === 'connected') {
        console.log('connected to ably server');
    }
});
    broadcaster: 'ably',
    authEndpoint: '/broadcasting/auth' // relative or absolute url to laravel-server
  • 你可以设置额外的能力J js-客户选项 创建时 Echo 举个例子 其中一些是... ...... .....
    broadcaster: 'ably',
    // ably specific client-options
    echoMessages: true, // self-echo for published message is set to false internally.
    queueMessages: true, // default: true, maintains queue for messages to be sent.
    disconnectedRetryTimeout: 15000, // reconnect after 15 seconds when client goes disconnected state
    suspendedRetryTimeout: 30000, // reconnect after 30 seconds when client goes suspended state

一旦您根据需要对 Echo 配置进行了解析和调整,您就可以编译您的应用程序的资产 :

npm run dev
  • 如果您在客户端使用 SPA , 在用户登录时, 新的客户端ID 会被指定到符上 。 因此,下一个通道附件的连接进入失败状态 。 我们已经解决这个问题。 现在,它立即重新连接, 重新连接所有现有的频道。 见 修复客户端ID不匹配 更多细节。 在用户登录时,连接+通道会进入失败状态,不再重新连接. 因此,您需要在用户登录后创建一个新的 Echo 实例 .

使用自定义执行与 laravel sanctum/ 支持通道认证合作

    echo = new Echo({
            broadcaster: 'ably',
            useTls: true,
            requestTokenFn: async (channelName: string, existingToken: string) => {
                let postData = { channel_name: channelName, token: existingToken };
                const res = await axios.post("/api/broadcasting/auth", postData);
                return res.data;
            },
    });
  • 注:不为以上代码添加尝试/捕获语句,因为例外情况正在内部处理.

观察频道消息的精通dev-console和离开频道

  • 您可以使用
//public channel
let echoPublicChannel = Echo.channel('channel1');
let ablyPublicChannelName = echoPublicChannel.name;
console.log(ablyPublicChannelName); // public:channel1

// private channel
let echoPrivateChannel = Echo.private('channel2');
let ablyPrivateChannelName = echoPrivateChannel.name;
console.log(ablyPrivateChannelName); // private:channel2

// presence channel
let echoPresenceChannel = Echo.join('channel3');
let ablyPresenceChannelName = echoPresenceChannel.name;
console.log(ablyPresenceChannelName); // presence:channel3
Echo.leaveChannel(echoPublicChannel.name);
Echo.leaveChannel(echoPrivateChannel.name);
Echo.leaveChannel(echoPresenceChannel.name);

成功/未能确认低语

  • 您可以通过传递额外的回调参数来获取对在私人/ 存在频道发送的低语/ 客户端- 事件的确认 .
  • 额外调用是接收 err 表示成功/失败的对象.
        echoPrivateChannel.subscribed(() => {
                echoPrivateChannel.whisper('msg', 'Hello there jonny!', (err) => {
                    if(err) {
                        console.log('whisper failed with error ' + err);
                    } else {
                        console.log('whisper succeeded');
                    }
                });
            });

正式文件

捐款

  • 确保所有公共互动方法 Echo 财务报告和审定财务报表 Channel 无论内部实施与否,物体均保持不变.
  • 遵循以下步骤修改代码.
  1. 叉来.
  2. 创建您的特性分支( E)git checkout -b my-new-feature) (中文(简体) ).
  3. 提交更改( E)git commit -am 'Add some feature') (中文(简体) ).
  4. 确保您添加了合适的测试, 测试套件正在通过( 运行) vendor/bin/phpunit(中文(简体) )
  5. 推向分行(git push origin my-new-feature) (中文(简体) ).
  6. 创建新拉请求 .

释放进程

此库使用 语义版本. 每次发布需要做以下工作:

  1. 为发行创建新分支, 命名为 release/1.0.3 (何处) 1.0.3 这是你释放的, 作为新版本.
  2. 更新 LIB_VERSION 内 src/connector/ably-connector.ts。 。 。 .
  3. 更新 version 内 pakckage.json。 。 。 .
  4. 运行 github_changelog_generator 以自动更新 变化中。这可能需要一些人工干预,无论是从命令的运行方式还是从修改更改日志文件的角度来说。 您的里程可能不同 :
  • 您需要运行的命令 看起来像这样: github_changelog_generator -u ably-forks -p laravel-echo --since-tag ably-echo-1.0.3 --output delta.md --token $GITHUB_TOKEN_WITH_REPO_ACCESS生成符号 这里。 。 。 .
  • 用上面的命令, --output delta.md 写入在 --since-tag 到一个新的文件.
  • 新文件的内容( :delta.md)然后需要手动插入到顶端 变化中,更改"未释放"标题并链接到当前版本编号.
  • 还确保“Full Changelog”链接指向新版本标签,而不是 HEAD。 。 。 .
  1. 提交生成 变化中 文件为 root.
  2. 做公关反对 main。 。 。 .
  3. 公关批准后,合并为 main。 。 。 .
  4. 添加标签并推到原产地 - 例如: git tag ably-echo-1.0.3 && git push origin ably-echo-1.0.3。 。 。 .
  5. 在npmjs.com上发布npm包.
  6. 访问 https://github.com/able-forks/lalavel-echo/tags 互联网档案馆的存檔,存档日期2013-12-02 并添加发布后注释(一般您只需复制您添加到ChangGELOG中的注释).
  7. 更新 Ably 更改日志 (通过) 进步应用)随着这些变化(再次,你只需复制你添加到变换组的音符).

说明

  • 当前 README 新建并位于 .github/README.md。 。 。 .
  • CHANGELOG-ABLY.md 用于执行更改日志,而不是 CHANGELOG.md。 。 。 .
  • 这主要是为了避免与基地寄存器冲突同步.

版本与发布记录

@ably/laravel-echo 共发布 7 个版本,首次发布于 2022/10/25;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.6latest2024/09/262 年前
1.0.52024/07/152 年前
1.0.42024/03/062 年前
1.0.32023/06/133 年前
1.0.22022/12/093 年前
1.0.12022/11/113 年前

关于 @ably/laravel-echo 的常见问题

@ably/laravel-echo 是什么?

Laravel Echo 图书馆,用于美丽的 Ably 集成

如何安装 @ably/laravel-echo?

在项目目录运行 npm install @ably/laravel-echo,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:ably(^1.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@ably/laravel-echo 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ably/laravel-echo 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ably/laravel-echo 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=10。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ably/laravel-echo 可以商用吗?

@ably/laravel-echo 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ably/laravel-echo 的下载量有多少?

根据 npm 官方下载统计,@ably/laravel-echo 在 2026/10/05 – 2026/11/03 这 30 天内被下载 29,389 次,日均约 980 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ably/laravel-echo 还在维护吗?

最新版本 1.0.6 发布于 2024/09/26(2 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。