Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie Laravel-Echo-Server zum Aufbau einer Event-Broadcast-Plattform

So verwenden Sie Laravel-Echo-Server zum Aufbau einer Event-Broadcast-Plattform

不言
不言Original
2018-07-27 10:50:014516Durchsuche

Dieser Artikel stellt Ihnen den Artikel über die Verwendung von Laravel-Echo-Server zum Aufbau einer Event-Broadcast-Plattform vor. Er hat einen guten Referenzwert und ich hoffe, er kann Freunden in Not helfen.

In diesem Artikel wird der Implementierungsprozess von Laravel-Hintergrundübertragungsnachrichten an das Vue-Frontend aufgezeichnet, der in früheren Projekten aufgetreten ist. Laravel verfügt nicht über eine integrierte Socket.IO-Serverimplementierung, es gibt jedoch einen von einem Drittanbieter implementierten Socket.IO-Treiber: Laravel-Echo-Server, der einer Middleware entspricht: Laravel + Laravel-Echo-Server + vue/ laravel-echo

Gesamtarchitektur

So verwenden Sie Laravel-Echo-Server zum Aufbau einer Event-Broadcast-Plattform

1. Laravel-Echo-Server

Ausführlich Einführung finden Sie unter: https://github.com/tlaverdure...

1.1 laravel-echo-serverDer Server wird direkt im Laravel-Projekt erstellt:

① Laravel-echo-server installieren global: npm install laravel-echo-server -g;
② Geben Sie das Laravel-Projekt in die Konsole ein und führen Sie den Befehl aus: laravel-echo-server init

So verwenden Sie Laravel-Echo-Server zum Aufbau einer Event-Broadcast-Plattform
Es wird eine weitere Datei geben, die alle Konfigurationsinformationen enthält laravel-echo-server.json③ Starten Sie den Dienst, indem Sie die
Befehlszeile laravel-echo-server start

1.2

Serverunabhängige Bereitstellung ausführen laravel-echo-server

Wir haben festgestellt, dass der Dienst tatsächlich gestartet werden kann, solange eine

-Datei vorhanden ist. Daher kann der Dienst offensichtlich unabhängig vom Laravel-Projekt bereitgestellt werden (Sie müssen sich nicht darum kümmern, wenn es ist nicht notwendig). laravel-echo-server.jsonVerwenden Sie HTTP, um Nachrichten an den
-Server zu senden. Das Format ist wie folgt: laravel-echo-server

POST http://app.dev:6001/apps/your-appId/events?auth_key=you-key'
Test mit Postbote:

So verwenden Sie Laravel-Echo-Server zum Aufbau einer Event-Broadcast-Plattform

Der Test war erfolgreich,

der Server wurde erfolgreich erstelltlaravel-echo-server

2. Laravel-Backend

definieren

als Schnittstelle BroadcastHttpPush.php

<?php namespace App\HelpTrait;

use GuzzleHttp\Client;

trait BroadcastHttpPush
{
    public function push($data)
    {
        $baseUrl = env(&#39;WEBSOCKET_BASEURL&#39;, &#39;http://localhost:6001/&#39;);
        $appId = env(&#39;WEBSOCKET_APPID&#39;, &#39;3ccfbd93b5e2906a&#39;);
        $key = env(&#39;WEBSOCKET_KEY&#39;, &#39;6509c546c053d59057a61e46ae9a7898&#39;);
        $httpUrl = $baseUrl . &#39;apps/&#39; . $appId . &#39;/events?auth_key=&#39; . $key;
      
        $client = new Client([
            &#39;base_uri&#39; => $httpUrl,
            'timeout' => 2.0,
        ]);
        $response = $client->post($httpUrl, [
            'json' => $data
        ]);
        $code = $response->getStatusCode();
    }
}
verwenden:

<?php namespace App\Controllers;

use App\HelpTrait\BroadcastHttpPush;

class SendMessage
{
    use BroadcastHttpPush;
    
    public function index()
    {
        $broadcastChannel = array(
            "channel" => "private-Message",   // 通道名,`private-`表示私有
            "name" => "sayHello",    // 事件名
            "data" => array(
                "status" => 200, 
                "message" => "hello world!"
            )
        );
        $this->push($broadcastChannel);
    }
}
3. vue Frontend

Definition

UserActionNotification.vue

<template>
  <p>
    
  </p>
</template>

<script>
import Echo from &#39;laravel-echo&#39;
import io from &#39;socket.io-client&#39;
export default {
  mounted() {
    window.io = io
    window.Echo = new Echo({
      broadcaster: &#39;socket.io&#39;,
      host: &#39;http://localhost:6001&#39;,
    })
    window.Echo.private(&#39;Message&#39;).listen(&#39;.sayHello&#39;, (res) => {
       if (res.status === 200) {
         console.log(res.message)
       } else {
         console.log(&#39;something wrong!&#39;)
       }
    })
  }
}
</script>

<style></style>

Ereignis 注: muss sayHello vorangestellt werden, andernfalls müssen Sie die Domain mitbringen Namensraum der Veranstaltung; .

bezogene Empfehlungen:

Wie betreibt Laravel die Datenbank? Drei Möglichkeiten des Laravel-Datenbankbetriebs (Code)

Wie erstelle ich eine Antwort in Laravel 5.5? Einführung in das Erstellen von Antworten (Code)

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Laravel-Echo-Server zum Aufbau einer Event-Broadcast-Plattform. 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