>  기사  >  백엔드 개발  >  PHP와 Pusher를 이용한 실시간 통신

PHP와 Pusher를 이용한 실시간 통신

WBOY
WBOY원래의
2023-06-28 12:11:241767검색

인터넷의 발달로 인해 실시간 커뮤니케이션이 더욱 중요해졌습니다. 온라인 고객 서비스이든 게임에서의 실시간 상호 작용이든 실시간 커뮤니케이션 지원이 필요합니다. 웹 개발의 주류 언어 중 하나인 PHP 언어에는 실제로 실시간 통신 방법이 점점 더 많아지고 있습니다. 그 중 푸셔(Pusher) 기술을 이용하면 실시간 통신 기능을 빠르고 편리하게 구현할 수 있다.

푸셔란 무엇인가요?

Pusher는 자체 서버를 설정하지 않고도 애플리케이션이 실시간 통신 기능을 쉽게 구현할 수 있도록 하는 실시간 메시징 서비스입니다. WebSockets 프로토콜을 기반으로 하며 강력한 신뢰성과 안정성, 사용 용이성 및 높은 개발 효율성이라는 장점을 가지고 있습니다. 또한 Pusher는 PHP, Javascript, Ruby 및 기타 언어를 포함한 다양한 SDK도 제공합니다. 이러한 SDK를 통해 개발자는 애플리케이션에 Pusher 서비스를 신속하게 통합하여 실시간 통신 기능을 구현할 수 있습니다.

푸셔를 사용하는 방법은 무엇인가요?

Pusher를 사용하기 전에 먼저 Pusher 계정을 등록하고 애플리케이션을 만들어야 합니다. 그런 다음 애플리케이션에서 앱 키, 앱 비밀 및 앱 ID를 생성하고 이 정보를 애플리케이션에 추가해야 합니다.

다음으로 Composer를 통해 설치할 수 있는 Pusher PHP SDK를 설치해야 합니다.

composer require pusher/pusher-php-server "^4.0"

설치가 완료되면 코드 작성을 시작할 수 있습니다.

<?php

// 引入Pusher SDK
require __DIR__ . '/vendor/autoload.php';

// 初始化Pusher实例
$options = array(
  'cluster' => 'YOUR_CLUSTER',
  'useTLS' => true
);
$pusher = new PusherPusher(
  'APP_KEY',
  'APP_SECRET',
  'APP_ID',
  $options
);

// 发送消息
$pusher->trigger('channel_name', 'event_name', array('message' => 'hello world'));

위 코드는 Pusher 사용 방법과 내용을 보여줍니다. 교체해야 할 사항은 다음과 같습니다.

  1. YOUR_CLUSTER를 자체 Pusher 클러스터로 교체하세요.
  2. APP_KEY, APP_SECRET, APP_ID를 자신만의 Pusher 앱 키, 앱 비밀, 앱 ID로 바꾸세요.

이 PHP 스크립트는 "message" 속성이 있는 JSON 데이터 패킷을 "channel_name"이라는 채널에 푸시합니다. 데이터 패킷에는 "hello world"라는 메시지가 포함되어 있습니다.

물론 실제 애플리케이션에서는 이런 식으로 Pusher에 메시지를 보내는 것이 불가능합니다. 아래에서는 실제로 Pusher를 활용하는 방법을 자세히 소개하겠습니다.

실용적인 전투: 실시간 채팅방

다음으로, Pusher를 사용하여 실시간 채팅방을 구축하여 사용자 간 실시간 채팅 기능을 구현해 보겠습니다.

1단계: 준비

먼저, Pusher에서 새 애플리케이션을 만들어야 합니다. Pusher 공식 홈페이지에 로그인 후 "CREATE NEW APP" 버튼을 클릭하고, 기본 정보를 입력한 뒤 안내에 따라 애플리케이션을 생성합니다.

그런 다음 애플리케이션 설정의 "키" 탭에서 APP_KEY, APP_SECRET 및 APP_ID를 찾아 이 정보를 올바르게 유지해야 합니다.

다음으로 PHP 스크립트를 실행하기 위해 웹 서버를 설정해야 합니다. 실시간으로 메시지를 푸시해야 하기 때문에 기존 Apache나 Nginx 서버를 사용할 수 없으며 WebSocket 프로토콜을 지원하는 서버를 사용해야 합니다. Composer를 통해 설치할 수 있는 Ratchet PHP 라이브러리를 WebSocket 서버로 사용하는 것이 좋습니다.

composer require cboden/ratchet

2단계: 기본 인터페이스 구축

PHP 코드 작성을 시작하기 전에 기본 채팅방 인터페이스를 구축해야 합니다. 인터페이스에는 다음 요소가 포함되어야 합니다.

  1. 입력 상자: 채팅 내용을 입력하는 데 사용됩니다.
  2. 보내기 버튼: 채팅 내용을 보내는 데 사용됩니다.
  3. 메시지 목록: 보낸 채팅 내용을 표시하는 데 사용됩니다.

여기에서는 비교적 간단한 HTML 및 JavaScript 코드를 사용하여 이 인터페이스를 구현합니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>实时聊天室</title>
</head>
<body>
  <ul id="messages"></ul>
  <form id="chat-form">
    <input type="text" id="message-input"/>
    <button type="submit">发送</button>
  </form>
  <script src="https://js.pusher.com/7.0/pusher.min.js"></script>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    // 初始化Pusher客户端
    const pusher = new Pusher('APP_KEY', {
      cluster: 'YOUR_CLUSTER',
      encrypted: true
    });

    // 订阅频道
    const channel = pusher.subscribe('chat-channel');

    // 处理消息
    channel.bind('chat-message', function(data) {
      $('#messages').append('<li>' + data.message + '</li>');
    });

    // 发送消息
    $('#chat-form').submit(function(e) {
      e.preventDefault();
      const message = $('#message-input').val();
      $('#message-input').val('');
      $.post('/send-message.php', {message: message});
    });
  </script>
</body>
</html>

위 코드에서는 Pusher 클라이언트와 jQuery 라이브러리를 소개하고 Pusher 클라이언트 인스턴스를 정의했습니다. 그런 다음 "chat-channel"이라는 Pusher 채널을 구독하고 이 채널에서 "chat-message" 이벤트가 수신되면 메시지 목록에 메시지를 쓰는 이벤트 핸들러 함수를 정의했습니다. 동시에 사용자가 보내기 버튼을 클릭하면 양식 데이터가 /send-message.php 파일에 게시됩니다.

3단계: 메시지 보내기 및 받기

이제, 양식 데이터가 Pusher 서버로 올바르게 전송될 수 있도록 /send-message.php 파일에 코드를 구현해야 합니다. 전체 /send-message.php 코드는 다음과 같습니다.

<?php

// 引入Pusher SDK
require __DIR__ . '/vendor/autoload.php';

// 初始化Pusher实例
$options = array(
  'cluster' => 'YOUR_CLUSTER',
  'useTLS' => true
);
$pusher = new PusherPusher(
  'APP_KEY',
  'APP_SECRET',
  'APP_ID',
  $options
);

// 获取消息内容
$message = $_POST['message'];

// 将消息推送到Pusher服务器中
$pusher->trigger('chat-channel', 'chat-message', array('message' => $message));

위 코드에서는 먼저 Pusher SDK를 도입하고 Pusher 인스턴스를 초기화했습니다. 그런 다음 양식에서 제출한 데이터를 기반으로 "chat-channel"이라는 Pusher 채널에 메시지를 푸시하고 이벤트 이름과 메시지 내용을 지정합니다.

이렇게 하면 사용자가 채팅방에 메시지를 입력하고 "보내기" 버튼을 클릭하면 메시지가 /send-message.php 파일에 게시되고 PHP 코드가 해당 메시지를 다음으로 푸시합니다. 푸셔 서버. 이때, 푸셔 서버는 "채팅 채널"에 가입한 모든 클라이언트에게 메시지를 브로드캐스트하여 전체 메시지 송수신 과정을 완료합니다.

결론

Pusher 기술을 이용하여 실시간 통신 기능을 구현하면 구현의 어려움을 획기적으로 단순화하고 개발 효율성을 높일 수 있습니다. 위의 예시 시연을 통해 실제로 실시간 채팅방을 구축하기 위해 Pusher 기술을 사용하는 것이 매우 편리하다는 것을 알 수 있습니다.

물론 Pusher는 채팅방 애플리케이션 시나리오에만 국한되지 않고 실시간 게임, 사물 인터넷, 실시간 데이터 모니터링 등 수많은 시나리오에서 사용할 수 있으며 Pusher 기술을 사용하여 기타 시나리오를 구현할 수 있습니다. 실시간 통신 기능도 구현해야 한다면, Pusher를 활용해 관련 기능을 빠르게 구현해볼 수 있습니다.

위 내용은 PHP와 Pusher를 이용한 실시간 통신의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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