导言
此寄存器为 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');
}
});
- 看看这个 laravel 广播认证端点 用于自定义认证端点.
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
- 认证特定客户端选项 不应该使用,因为拉拉维尔
authEndpoint已经负责符号认证,不需要外部认证机制.
一旦您根据需要对 Echo 配置进行了解析和调整,您就可以编译您的应用程序的资产 :
npm run dev
- 如果您在客户端使用 SPA , 在用户登录时, 新的客户端ID 会被指定到符上 。 因此,下一个通道附件的连接进入失败状态 。 我们已经解决这个问题。 现在,它立即重新连接, 重新连接所有现有的频道。 见 修复客户端ID不匹配 更多细节。 在用户登录时,连接+通道会进入失败状态,不再重新连接. 因此,您需要在用户登录后创建一个新的 Echo 实例 .
使用自定义执行与 laravel sanctum/ 支持通道认证合作
- 有明确一节说明 授权私人/新闻广播频道。 。 。 .
- 这相当于提供
requestTokenFn在创建 Echo 实例时作为参数
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
- 使用同一频道名称 在 dev 控制台上观察频道消息。 。 。 .
- 离开频道时使用相同的频道名称
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 的更多文档可见于 拉拉维尔网站。 。 。 .
捐款
- 确保所有公共互动方法
Echo财务报告和审定财务报表Channel无论内部实施与否,物体均保持不变. - 遵循以下步骤修改代码.
- 叉来.
- 创建您的特性分支( E)
git checkout -b my-new-feature) (中文(简体) ). - 提交更改( E)
git commit -am 'Add some feature') (中文(简体) ). - 确保您添加了合适的测试, 测试套件正在通过( 运行)
vendor/bin/phpunit(中文(简体) ) - 推向分行(
git push origin my-new-feature) (中文(简体) ). - 创建新拉请求 .
释放进程
此库使用 语义版本. 每次发布需要做以下工作:
- 为发行创建新分支, 命名为
release/1.0.3(何处)1.0.3这是你释放的, 作为新版本. - 更新
LIB_VERSION内src/connector/ably-connector.ts。 。 。 . - 更新
version内pakckage.json。 。 。 . - 运行
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。 。 。 .
- 提交生成 变化中 文件为 root.
- 做公关反对
main。 。 。 . - 公关批准后,合并为
main。 。 。 . - 添加标签并推到原产地 - 例如:
git tag ably-echo-1.0.3 && git push origin ably-echo-1.0.3。 。 。 . - 在npmjs.com上发布npm包.
- 访问 https://github.com/able-forks/lalavel-echo/tags 互联网档案馆的存檔,存档日期2013-12-02 并添加发布后注释(一般您只需复制您添加到ChangGELOG中的注释).
- 更新 Ably 更改日志 (通过) 进步应用)随着这些变化(再次,你只需复制你添加到变换组的音符).
说明
- 当前
README新建并位于.github/README.md。 。 。 . CHANGELOG-ABLY.md用于执行更改日志,而不是CHANGELOG.md。 。 。 .- 这主要是为了避免与基地寄存器冲突同步.