Heim  >  Artikel  >  Backend-Entwicklung  >  Echtzeitkommunikation mit PHP und Pusher

Echtzeitkommunikation mit PHP und Pusher

WBOY
WBOYOriginal
2023-06-28 12:11:241718Durchsuche

Mit der Entwicklung des Internets wird Echtzeitkommunikation immer wichtiger. Ob Online-Kundenservice oder Echtzeitinteraktion in Spielen, Echtzeit-Kommunikationsunterstützung ist erforderlich. Als eine der Mainstream-Sprachen der Webentwicklung verfügt die PHP-Sprache tatsächlich über immer mehr Echtzeit-Kommunikationsmethoden. Unter anderem können mithilfe der Pusher-Technologie Echtzeit-Kommunikationsfunktionen schnell und bequem realisiert werden.

Was ist Pusher?

Pusher ist ein Echtzeit-Messaging-Dienst, der es Anwendungen ermöglicht, auf einfache Weise Echtzeit-Kommunikationsfunktionen zu implementieren, ohne eigene Server einzurichten. Es basiert auf dem WebSockets-Protokoll und bietet die Vorteile hoher Zuverlässigkeit und Stabilität, Benutzerfreundlichkeit und hoher Entwicklungseffizienz. Darüber hinaus bietet Pusher auch eine Vielzahl unterschiedlicher SDKs, darunter PHP, Javascript, Ruby und andere Sprachen. Mit diesen SDKs können Entwickler Pusher-Dienste schnell in ihre Anwendungen integrieren, um Echtzeit-Kommunikationsfunktionen zu erreichen.

Wie verwende ich Pusher?

Bevor wir Pusher nutzen können, müssen wir ein Pusher-Konto registrieren und eine Anwendung erstellen. Anschließend müssen wir in der Anwendung einen App-Schlüssel, ein App-Geheimnis und eine App-ID generieren und diese Informationen zu unserer Anwendung hinzufügen.

Als nächstes müssen wir das Pusher PHP SDK installieren, das über Composer installiert werden kann:

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

Nachdem die Installation abgeschlossen ist, können wir mit dem Schreiben des Codes beginnen:

<?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'));

Der obige Code zeigt die Verwendung von Pusher und den Inhalt das ersetzt werden muss, ist:

  1. Ersetzen Sie YOUR_CLUSTER durch Ihren eigenen Pusher-Cluster.
  2. Ersetzen Sie APP_KEY, APP_SECRET und APP_ID durch Ihren eigenen Pusher-App-Schlüssel, App-Geheimnis und App-ID.

Dieses PHP-Skript sendet ein JSON-Datenpaket mit dem Attribut „message“ an den Kanal namens „channel_name“. Das Datenpaket enthält die Nachricht „hello world“.

Natürlich ist es für uns in tatsächlichen Anwendungen unmöglich, einfach auf diese Weise Nachrichten an Pusher zu senden. Im Folgenden stellen wir detailliert vor, wie Pusher in praktischen Anwendungen eingesetzt wird.

Praktischer Kampf: ein Echtzeit-Chatroom

Als nächstes werden wir Pusher verwenden, um einen Echtzeit-Chatroom zu erstellen und die Echtzeit-Chat-Funktion zwischen Benutzern zu implementieren.

Schritt eins: Vorbereitung

Zuerst müssen wir eine neue Anwendung in Pusher erstellen. Melden Sie sich auf der offiziellen Website von Pusher an, klicken Sie auf die Schaltfläche „NEUE APP ERSTELLEN“, geben Sie die grundlegenden Informationen ein und erstellen Sie die Anwendung nach Aufforderung.

Dann müssen wir APP_KEY, APP_SECRET und APP_ID auf der Registerkarte „Schlüssel“ der Anwendungseinstellungen finden und diese Informationen ordnungsgemäß aufbewahren.

Als nächstes müssen wir einen Webserver einrichten, um unser PHP-Skript auszuführen. Da wir Nachrichten in Echtzeit übertragen müssen, können wir nicht den herkömmlichen Apache- oder Nginx-Server verwenden und müssen einen Server verwenden, der das WebSocket-Protokoll unterstützt. Es wird empfohlen, die Ratchet PHP-Bibliothek als WebSocket-Server zu verwenden, die über Composer installiert werden kann:

composer require cboden/ratchet

Schritt 2: Erstellen Sie eine grundlegende Schnittstelle

Bevor wir mit dem Schreiben von PHP-Code beginnen, müssen wir eine grundlegende Chatroom-Schnittstelle erstellen. Die folgenden Elemente müssen in die Schnittstelle eingebunden werden:

  1. Eingabefeld: Wird zur Eingabe von Chatinhalten verwendet.
  2. Schaltfläche „Senden“: Wird zum Senden von Chatinhalten verwendet.
  3. Nachrichtenliste: Wird zur Anzeige gesendeter Chatinhalte verwendet.

Hier verwenden wir relativ einfachen HTML- und JavaScript-Code, um diese Schnittstelle zu implementieren.

<!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>

Im obigen Code haben wir den Pusher-Client und die jQuery-Bibliothek eingeführt und eine Pusher-Client-Instanz definiert. Dann haben wir den Pusher-Kanal mit dem Namen „chat-channel“ abonniert und eine Event-Handler-Funktion definiert, um die Nachricht in die Nachrichtenliste zu schreiben, wenn das „chat-message“-Ereignis in diesem Kanal empfangen wird. Gleichzeitig haben wir auch eine Funktion zur Verarbeitung von Formularübermittlungsereignissen definiert. Wenn der Benutzer auf die Schaltfläche „Senden“ klickt, werden die Formulardaten in die Datei /send-message.php gesendet.

Schritt 3: Nachrichten senden und empfangen

Jetzt müssen wir den Code in der Datei /send-message.php implementieren, damit die Formulardaten korrekt an den Pusher-Server gesendet werden können. Der vollständige /send-message.php-Code lautet wie folgt:

<?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));

Im obigen Code haben wir zuerst das Pusher SDK eingeführt und eine Pusher-Instanz initialisiert. Anschließend senden wir die Nachricht basierend auf den vom Formular übermittelten Daten an den Pusher-Kanal namens „chat-channel“ und geben den Ereignisnamen und den Nachrichteninhalt an.

Wenn der Benutzer auf diese Weise eine Nachricht in den Chatroom eingibt und auf die Schaltfläche „Senden“ klickt, wird die Nachricht an die Datei /send-message.php gesendet und der PHP-Code sendet die Nachricht dann an die Datei Pusher-Server. Zu diesem Zeitpunkt sendet der Pusher-Server die Nachricht an alle Clients, die den „Chat-Kanal“ abonniert haben, um den gesamten Nachrichtensende- und -empfangsprozess abzuschließen.

Fazit

Die Verwendung der Pusher-Technologie zur Implementierung von Echtzeit-Kommunikationsfunktionen kann die Implementierungsschwierigkeiten erheblich vereinfachen und die Entwicklungseffizienz verbessern. Anhand der obigen Beispieldemonstration können wir sehen, dass es in der Praxis sehr praktisch ist, die Pusher-Technologie zum Aufbau eines Echtzeit-Chatrooms zu verwenden.

Natürlich ist Pusher nicht auf Chatroom-Anwendungsszenarien beschränkt, sondern kann in unzähligen Szenarien eingesetzt werden, wie z. B. Echtzeitspielen, Internet der Dinge, Echtzeit-Datenüberwachung und anderen Szenarien, die mithilfe der Pusher-Technologie implementiert werden können. Wenn Sie auch Echtzeit-Kommunikationsfunktionen implementieren müssen, können Sie versuchen, mit Pusher schnell verwandte Funktionen zu implementieren.

Das obige ist der detaillierte Inhalt vonEchtzeitkommunikation mit PHP und Pusher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn