>  기사  >  PHP 프레임워크  >  Laravel 개발: Laravel Echo Server를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까?

Laravel 개발: Laravel Echo Server를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까?

王林
王林원래의
2023-06-14 15:09:191807검색

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 서버와 프런트엔드 코드를 성공적으로 구성했습니다. 이러한 도구를 다음과 같은 다양한 애플리케이션 시나리오에 사용할 수 있습니다. 🎜
  • 실시간 채팅방 애플리케이션
  • 실시간 블로그 댓글
  • 실시간 사용자 상태 업데이트
🎜Echo 서버는 WebSocket 통신의 서버 측만 구현한다는 점에 유의해야 합니다. 실시간 통신 기능을 구현해야 하는 경우 애플리케이션에서도 해당 로직을 구현해야 합니다. 🎜🎜Laravel의 broadcast 기능을 사용하여 이러한 로직을 구현할 수 있습니다. 브로드캐스트 사용 방법은 Laravel 문서를 참조하세요. 🎜🎜결론🎜🎜이 글에서는 Laravel Echo Server를 사용하여 WebSocket 통신을 구현하는 방법을 자세히 설명했습니다. 🎜🎜이 프로세스는 간단하며 다양한 실시간 애플리케이션을 구현하는 데 사용할 수 있으므로 사용자에게 메시지를 보내고 실시간으로 피드백을 받을 수 있습니다. 🎜🎜Laravel Echo Server를 사용하면 효율적인 실시간 통신 애플리케이션을 보다 쉽게 ​​구현하고 애플리케이션의 사용자 경험과 상호 작용성을 향상시킬 수 있습니다. 🎜

위 내용은 Laravel 개발: Laravel Echo Server를 사용하여 WebSocket 통신을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.