<commit_before># 事件广播

- [简介](#introduction)
    - [配置](#configuration)
    - [对驱动器的要求](#driver-prerequisites)
- [概念综述](#concept-overview)
    - [使用示例程序](#using-example-application)
- [定义广播事件](#defining-broadcast-events)
    - [广播数据](#broadcast-data)
    - [广播队列](#broadcast-queue)
- [频道授权](#authorizing-channels)
    - [定义授权路由](#defining-authorization-routes)
    - [定义授权回调](#defining-authorization-callbacks)
- [对事件进行广播](#broadcasting-events)
    - [只广播给他人](#only-to-others)
- [接收广播](#receiving-broadcasts)
    - [安装 Laravel Echo](#installing-laravel-echo)
    - [对事件进行监听](#listening-for-events)
    - [命名空间](#namespaces)
- [Presence 频道](#presence-channels)
    - [授权 Presence 频道](#authorizing-presence-channels)
    - [加入 Presence 频道](#joining-presence-channels)
    - [广播到 Presence 频道](#broadcasting-to-presence-channels)
- [消息通知](#notifications)

<a name="introduction"></a>
## 简介

在现代的 web 应用程序中，WebSockets 被用来实现需要实时、即时更新的接口。当服务器上的数据被更新后，更新信息将通过 WebSocket 连接发送到客户端等待处理。相比于不停地轮询应用程序，WebSocket 是一种更加可靠和高效的选择。

为了帮助你建立这类应用，Laravel 将通过 WebSocket 连接来使「广播」[事件](/docs/{{version}}/events) 变得更加轻松。广播事件允许你在服务端代码和客户端 JavaScript 应用之间共享相同的事件名。

> {tip} 在深入了解事件广播之前，请确认你已阅读所有关于 Laravel [事件和侦听器](/docs/{{version}}/events) 的文档。

<a name="configuration"></a>
### 配置

所有关于事件广播的配置都被保存在 `config/broadcasting.php` 文件中。Larevel 自带了几个广播驱动器：[Pusher](https://pusher.com)， [Redis](/docs/{{version}}/redis)， 和一个用于本地开发与调试的 `log` 驱动器。另外，还有一个 `null` 驱动器可以让你完全关闭广播功能。每一个驱动的示例配置都可以在 `config/broadcasting.php` 文件中被找到。

#### 广播服务提供者

在对事件进行广播之前，你必须先注册 `App\Providers\BroadcastServiceProvider`。对于一个全新安装的 Laravel 应用程序，你只需在 `config/app.php` 配置文件的 `providers` 数组中取消对该提供者的注释即可。该提供者将允许你注册广播授权路由和回调。

#### CSRF 令牌

[Laravel Echo](#installing-laravel-echo) 会需要访问当前会话的 CSRF 令牌。如果可用，Echo 会从 `Laravel.csrfToken` JavaScript 对象中获取该令牌。如果你运行了 `make:auth` Artisan 命令，该对象会在 `resources/views/layouts/app.blade.php` 布局文件中被定义。如果你未使用该布局文件，可以在应用程序的 `head` HTML 元素中定义一个 `meta` 标签：

```html
<meta name="csrf-token" content="{{ csrf_token() }}">
```

<a name="driver-prerequisites"></a>
### 对驱动器的要求

#### Pusher

如果你使用 [Pusher](https://pusher.com) 对事件进行广播，请用 Composer 包管理器来安装 Pusher PHP SDK：

```bash
composer require pusher/pusher-php-server
```
<commit_msg>fix world<commit_after># 事件广播

- [简介](#introduction)
    - [配置](#configuration)
    - [对驱动器的要求](#driver-prerequisites)
- [概念综述](#concept-overview)
    - [使用示例程序](#using-example-application)
- [定义广播事件](#defining-broadcast-events)
    - [广播数据](#broadcast-data)
    - [广播队列](#broadcast-queue)
- [频道授权](#authorizing-channels)
    - [定义授权路由](#defining-authorization-routes)
    - [定义授权回调](#defining-authorization-callbacks)
- [对事件进行广播](#broadcasting-events)
    - [只广播给他人](#only-to-others)
- [接收广播](#receiving-broadcasts)
    - [安装 Laravel Echo](#installing-laravel-echo)
    - [对事件进行监听](#listening-for-events)
    - [命名空间](#namespaces)
- [Presence 频道](#presence-channels)
    - [授权 Presence 频道](#authorizing-presence-channels)
    - [加入 Presence 频道](#joining-presence-channels)
    - [广播到 Presence 频道](#broadcasting-to-presence-channels)
- [消息通知](#notifications)

<a name="introduction"></a>
## 简介

在现代的 web 应用程序中，WebSockets 被用来实现需要实时、即时更新的接口。当服务器上的数据被更新后，更新信息将通过 WebSocket 连接发送到客户端等待处理。相比于不停地轮询应用程序，WebSocket 是一种更加可靠和高效的选择。

为了帮助你建立这类应用，Laravel 将通过 WebSocket 连接来使「广播」[事件](/docs/{{version}}/events) 变得更加轻松。广播事件允许你在服务端代码和客户端 JavaScript 应用之间共享相同的事件名。

> {tip} 在深入了解事件广播之前，请确认你已阅读所有关于 Laravel [事件和侦听器](/docs/{{version}}/events) 的文档。

<a name="configuration"></a>
### 配置

所有关于事件广播的配置都被保存在 `config/broadcasting.php` 文件中。Laravel 自带了几个广播驱动器：[Pusher](https://pusher.com)， [Redis](/docs/{{version}}/redis)， 和一个用于本地开发与调试的 `log` 驱动器。另外，还有一个 `null` 驱动器可以让你完全关闭广播功能。每一个驱动的示例配置都可以在 `config/broadcasting.php` 文件中被找到。

#### 广播服务提供者

在对事件进行广播之前，你必须先注册 `App\Providers\BroadcastServiceProvider`。对于一个全新安装的 Laravel 应用程序，你只需在 `config/app.php` 配置文件的 `providers` 数组中取消对该提供者的注释即可。该提供者将允许你注册广播授权路由和回调。

#### CSRF 令牌

[Laravel Echo](#installing-laravel-echo) 会需要访问当前会话的 CSRF 令牌。如果可用，Echo 会从 `Laravel.csrfToken` JavaScript 对象中获取该令牌。如果你运行了 `make:auth` Artisan 命令，该对象会在 `resources/views/layouts/app.blade.php` 布局文件中被定义。如果你未使用该布局文件，可以在应用程序的 `head` HTML 元素中定义一个 `meta` 标签：

```html
<meta name="csrf-token" content="{{ csrf_token() }}">
```

<a name="driver-prerequisites"></a>
### 对驱动器的要求

#### Pusher

如果你使用 [Pusher](https://pusher.com) 对事件进行广播，请用 Composer 包管理器来安装 Pusher PHP SDK：

```bash
composer require pusher/pusher-php-server
```

{'fraction_non_alphanumeric': 0.16976849750340445, 'fraction_numerical': 0.0, 'mean_word_length': 5.973101265822785, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 19, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '296685', 'n_tokens_mistral': 2464, 'n_tokens_neox': 2646, 'n_words': 243}