Laravel 개발: Laravel Echo 서버를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까?
현대 웹 애플리케이션에서는 실시간 메시징 커뮤니케이션이 매우 중요합니다. WebSocket은 양방향 통신을 위한 프로토콜입니다. HTTP 외에도 WebSocket을 사용하면 필요할 때 서버가 클라이언트에 메시지를 보낼 수 있습니다.
Laravel Echo Server는 실시간 메시지 통신을 위해 Node.js를 기반으로 구축된 WebSockets 서버입니다. Laravel Echo 패키지를 사용하면 WebSocket을 통해 클라이언트와 쉽게 통신할 수 있으므로 실시간 통신을 더 쉽게 설정할 수 있습니다.
이 글에서는 Laravel Echo Server를 사용하여 WebSocket 통신을 구현하는 방법에 대해 설명합니다.
1단계 - Laravel 및 Laravel Echo 설치
Laravel Echo 서버를 사용하기 전에 Laravel 및 해당 종속 항목을 설치해야 합니다.
Laravel에 대한 자세한 내용은 https://laravel.com/docs/8.x/installation
에서 확인할 수 있습니다. 마찬가지로 이 기사에서는 Laravel Echo 패키지도 설치해야 합니다. Composer를 사용하여 설치할 수 있습니다:
$ composer require laravel/echo
2단계 - Laravel Echo Server 설치
이제 Laravel Echo Server를 설치해야 합니다.
$ npm install -g laravel-echo-server
3단계 - 구성 파일
Laravel Echo 서버가 설치되면 구성 파일을 생성해야 합니다. 기본 구성 파일은 다음 명령을 사용하여 생성할 수 있습니다:
$ laravel-echo-server init
이렇게 하면 현재 디렉터리에 laravel-echo-server.json
파일이 생성됩니다. laravel-echo-server.json
文件。
接下来,我们需要修改此文件的一些配置,以确保它符合我们的应用程序需求。
在 laravel-echo-server.json
文件中,我们需要配置以下属性:
{ "authHost": "http://your-app.com", "authEndpoint": "/broadcasting/auth", "clients": [], "database": "redis", "databaseConfig": { "redis": { "host": "127.0.0.1", "port": "6379" } }, "devMode": true, "host": null, "port": "6001", "protocol": "http", "socketio": {}, "sslCertPath": "", "sslKeyPath": "", "sslCertChainPath": "", "sslPassphrase": "", "subscribers": { "http": true, "redis": true }, "apiOriginAllow": { "allowCors": false, "allowOrigin": "", "allowMethods": "", "allowHeaders": "" } }
authHost
:定义 Echo Server 要监听的地址(一般情况下与应用程序的地址相同)。authEndpoint
:定义了 Echo Server 将在此地址上等待客户端发送 Auth 信息以进行身份验证。database
:定义 Echo Server 用于存储连接和频道信息的数据库的类型。databaseConfig
:具体的数据库配置,这里我们使用 Redis。devMode
:如果设置为 true,你将会看到调试日志。host
:定义 Echo Server 监听的地址。如果未设置,Echo Server 将监听所有可用的网络接口。port
:定义 Echo Server 监听的端口。protocol
:定义 Echo Server 使用的协议。socketio
:更高级的配置参数,请查阅文档。sslCertPath
:路径到 SSL 根证书。sslKeyPath
:路径到 SSL 密钥。sslCertChainPath
:用于上传可选 SSL 根证书链。sslPassphrase
:如果写入了 SSL 密钥,则可能需要该值。subscribers
:定义能够订阅 Echo Server 的客户端类型。apiOriginAllow
:允许跨域请求的主机。一旦我们完成了上述配置并保存 laravel-echo-server.json
文件,我们可以使用以下命令启动 Echo Server:
$ laravel-echo-server start
步骤4 - 前端代码
现在,需要在我们的前端代码中引入 Echo 包。 确保在底部添加以下代码
<script src="https://cdn.jsdelivr.net/npm/laravel-echo@1.9.3/dist/echo.js"></script>
在您的 JavaScript 文件中添加以下代码:
import Echo from 'laravel-echo' window.Echo = new Echo({ broadcaster: 'socket.io', host: window.location.hostname + ':6001', auth: { headers: { 'Authorization': 'Bearer ' + token } } }); window.Echo.channel('YourChannel') .listen('YourEvent', (e) => { console.log(e); });
这将连接到 Echo 服务器并使用权限调用进行身份验证。 还将创建一个 YourChannel
频道并监听 YourEvent
事件。
步骤5 - 应用场景
现在,我们已经成功配置了 Laravel Echo Server 和前端代码。我们可以将这些工具用于多种应用场景,例如:
需要注意的是,Echo Server 只是实现了 WebSockets 通信的服务端。 如果我们需要实现实时通信的功能,我们还需要在应用程序中实现相应的逻辑。
我们可以使用 Laravel 的 broadcast
laravel-echo-server.json
파일에서 다음 속성을 구성해야 합니다. rrreee
authHost
: Echo 서버는 (일반적으로 애플리케이션과 동일한 주소)를 수신합니다. authEndpoint
: Echo 서버가 클라이언트가 인증을 위해 인증 정보를 보낼 때까지 기다리는 주소를 정의합니다. 데이터베이스
: Echo 서버가 연결 및 채널 정보를 저장하는 데 사용하는 데이터베이스 유형을 정의합니다. databaseConfig
: 특정 데이터베이스 구성, 여기서는 Redis를 사용합니다. devMode
: true로 설정하면 디버그 로그가 표시됩니다. host
: Echo 서버가 수신하는 주소를 정의합니다. 설정하지 않으면 Echo 서버는 사용 가능한 모든 네트워크 인터페이스를 수신합니다. port
: Echo 서버가 수신 대기하는 포트를 정의합니다. 프로토콜
: Echo 서버에서 사용하는 프로토콜을 정의합니다. socketio
: 고급 구성 매개변수에 대해서는 설명서를 참조하세요. sslCertPath
: SSL 루트 인증서의 경로입니다. sslKeyPath
: SSL 키의 경로입니다. sslCertChainPath
: 선택적 SSL 루트 인증서 체인을 업로드하는 데 사용됩니다. sslPassphrase
: SSL 키가 작성된 경우 이 값이 필요할 수 있습니다. subscribers
: Echo 서버를 구독할 수 있는 클라이언트 유형을 정의합니다. apiOriginAllow
: 도메인 간 요청을 허용하는 호스트입니다. laravel-echo-server.json
파일을 저장하면 다음 명령을 사용하여 Echo 서버를 시작할 수 있습니다. rrreee
Step 4 - 프런트엔드 코드 이제 프런트엔드 코드에 Echo 패키지를 도입해야 합니다. 하단에 다음 코드를 추가하세요. 🎜rrreee🎜JavaScript 파일에 다음 코드를 추가하세요. 🎜rrreee🎜 이렇게 하면 Echo 서버에 연결되고 권한 호출을 사용하여 인증됩니다.YourChannel
채널도 생성되어 YourEvent
이벤트를 수신합니다. 🎜🎜5단계 - 애플리케이션 시나리오🎜🎜이제 Laravel Echo 서버와 프런트엔드 코드를 성공적으로 구성했습니다. 이러한 도구를 다음과 같은 다양한 애플리케이션 시나리오에 사용할 수 있습니다. 🎜broadcast
기능을 사용하여 이러한 로직을 구현할 수 있습니다. 브로드캐스트 사용 방법은 Laravel 문서를 참조하세요. 🎜🎜결론🎜🎜이 글에서는 Laravel Echo Server를 사용하여 WebSocket 통신을 구현하는 방법을 자세히 설명했습니다. 🎜🎜이 프로세스는 간단하며 다양한 실시간 애플리케이션을 구현하는 데 사용할 수 있으므로 사용자에게 메시지를 보내고 실시간으로 피드백을 받을 수 있습니다. 🎜🎜Laravel Echo Server를 사용하면 효율적인 실시간 통신 애플리케이션을 보다 쉽게 구현하고 애플리케이션의 사용자 경험과 상호 작용성을 향상시킬 수 있습니다. 🎜위 내용은 Laravel 개발: Laravel Echo Server를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!