Wie erstelle ich eine Echtzeit-Chat-Anwendung mit Laravel?
Richten Sie Laravel ein und installieren Sie Abhängigkeiten wie Laravel Sanctum und Laravel Echo. 2. Konfigurieren Sie Pusher als Broadcast -Treiber in .Env und aktivieren Sie den BroadcastServiceProvider. 3. Erstellen Sie ein Nachrichtenmodell mit einer Migration, die User_id- und Nachrichtenfelder enthält. 4. Implementieren Sie die Authentifizierung mit dem integrierten System von Laravel. 5. Erstellen Sie ein Messagentialereignis, das implementiert wird, und verwendet ein PresencechanNel für Online -Benutzerverfolgung. 6. Erstellen Sie einen ChatController mit Methoden zum Abrufen und Senden von Nachrichten und übertragen Sie das Nachrichtenereignis. 7. Entwerfen Sie ein Frontend mit Blade oder Vue, integrieren Sie Laravel Echo und hören Sie sich Echtzeit-Events an. 8. Kompilieren Sie Assets, führen Sie den Server aus und testen Sie Echtzeit-Messaging über mehrere Benutzer hinweg. Eine Echtzeit-Chat-Anwendung in Laravel wird erfolgreich mit WebSockets über Pusher und Laravel Echo erstellt, wodurch Sofortnachrichtensendungen und dynamische UI-Updates ermöglicht werden.
Der Aufbau einer Echtzeit-Chat-Anwendung mit Laravel ist erreichbar, indem die Backend-Funktionen von Laravel mit Echtzeit-Rundfunk mithilfe von Websockets kombiniert werden. Hier ist eine praktische Anleitung, mit der Sie Schritt für Schritt eine funktionale Echtzeit-Chat-App erstellen können.

1. Richten Sie Laravel und Laravel Echo Server ein
Beginnen Sie mit der Erstellung eines neuen Laravel -Projekts:
Komponist erstellen project laravel/laravel in Echtzeit-Chat CD Echtzeit-Chat
Installieren Sie Laravel Sanctum für die API-Authentifizierung (bei Verwendung eines SPA) oder verwenden Sie die integrierte Sitzung von Laravel:

Der Komponist benötigt Laravel/Sanctum PHP Artisan Vendor: Publish -Provider = "Laravel \ Sanctum \ SanctumServiceProvider" PHP Artisan migrieren
Installieren Sie Laravel Echo und Pusher JS für clientseitige Rundfunk:
NPM Install-Save Laravel-Echo Pusher-Js
Hinweis: Laravel Echo ermöglicht es Ihrem JavaScript, auf Sendung von Ereignissen von Laravel zu hören.
2. Verwenden Sie Pusher für Echtzeit-Rundfunk
Laravel unterstützt mehrere Broadcast -Treiber (Redis, Pusher, Soketi). Pusher ist einer der am einfachsten zu errichtenden Anfänger.
Konfigurieren Sie Rundfunk
In .env
, set:
Broadcast_driver = Pusher Pusher_app_id = your_app_id Pusher_app_key = your_app_key Pusher_app_secret = your_app_secret Pusher_app_cluster = mt1
Stellen Sie in config/broadcasting.php
sicher, dass die Pusher -Einstellungen korrekt sind.
Rundfunk aktivieren
Überzeugen Sie diese Linie in bootstrap/app.php
:
App \ Providers \ BroadcastServiceProvider :: Klasse,
3. Erstellen Sie das Chat -Modell und die Migration
Generieren Sie ein Message
:
PHP Artisan Make: Model Message -m
In der Migrationsdatei:
Schema :: Create ('Nachrichten', Funktion (Blueprint $ Tabelle) { $ table-> id (); $ table-> unsignedBigInteger ('user_id'); $ table-> text ('meldung'); $ table-> timestemps (); $ table-> fremd ('user_id')-> referenzen ('id')-> on ('user')-> ondelete ('kaskade'); });
Migration ausführen:
PHP Artisan migrieren
4. Authentifizierung einrichten
Verwenden Sie die integrierte Authentifizierung von Laravel:
PHP Artisan Make: Auth
Für Laravel 8 müssen Sie möglicherweise
laravel/ui
verwenden:
Komponist benötigt Laravel/UI PHP Artisan UI Vue --Auth NPM Run Dev
5. Erstellen Sie eine Broadcast -Veranstaltung
Erstellen Sie eine neue Veranstaltung:
PHP Artisan Make: Event Messageent
app/Events/MessageSent.php
bearbeiten:
<? Php Namespace App \ Ereignisse; Verwenden Sie Illuminate \ Broadcasting \ Channel; Verwenden Sie Illuminate \ Broadcasting \ Interactswithsockets; Verwenden Sie Illuminate \ Broadcasting \ Presencechannel; Verwenden Sie Illuminate \ Broadcasting \ privatechannel; Verwenden Sie Illuminate \ Contracts \ Broadcasting \ SHODBROADCast; Verwenden Sie Illuminate \ Foundation \ Events \ Dispatchable; Verwenden Sie Illuminate \ Queue \ SerializesModels; Verwenden Sie App \ Models \ Message; Klassenmeldung implementiert Sollte Breadcast { Verwenden Sie Versand, Interactswithsockets, serializesModels; öffentliche $ message; Öffentliche Funktion __construct (Nachricht $ message) { $ this-> message = $ message; } öffentliche Funktion Broadcaston () { Neue Presencechannel zurückgeben ('Chat'); } öffentliche Funktion BroadcastWith () { zurückkehren [ 'id' => $ this-> message-> id, 'user_id' => $ this-> message-> user_id, 'meldung' => $ this-> message-> meldung, 'created_at' => $ this-> message-> erstellt_at, ]; } }
Mithilfe von
PresenceChannel
können Sie sehen, wer online ist. Sie können auchPrivateChannel
oderChannel
je nach Ihren Anforderungen verwenden.
6. Erstellen Sie den Chat -Controller
Php Artisan Make: Controller Chatcontroller
Fügen Sie Methoden hinzu, um Nachrichten abzurufen und eine Nachricht zu senden:
Verwenden Sie App \ Models \ Message; Verwenden Sie App \ Ereignisse \ messagesent; öffentliche Funktionen FetchMessages () { Rückgabenachricht :: mit ('user')-> last ()-> limit (100)-> get ()-> reverse (); } Öffentliche Funktion sendMessage (Anfrage $ Anfrage) { $ message = auth ()-> user ()-> message ()-> create ([ 'meldung' => $ request-> meldung ]); Broadcast (New Message ($ message))-> toothers (); return ['Status' => 'Nachricht gesendet!']; }
Fügen Sie die Routen in routes/web.php
hinzu:
Verwenden Sie App \ http \ Controller \ ChatController; Route :: Middleware (['Auth'])-> Gruppe (function () { Route :: get ('/chat', function () { Rückgabeansicht ('Chat'); }); Route :: get ('/message', [chatController :: class, 'fetchMessages']); Route :: post ('/messages', [chatController :: class, 'sendMessage']); });
7. Bauen Sie die Frontend (Blade oder Vue)
Erstellen Sie einen einfachen chat.blade.php
:
<div id = "App"> <ul id = "message"> <li v-für = "Nachricht in Nachrichten"> <strong>@{{message.user.name}}: </strong> @{{message.message}} </li> </ul> <Eingabe V-Model = "NewMessage" @keyup.enter = "sendMessage" Placeholder = "Geben Sie eine Nachricht ein ..." Typ = "Text" > </div> <script src = "{{asset ('js/app.js')}}"> </script>
Initialisieren Sie Laravel -Echo in resources/js/bootstrap.js
oder app.js
:
Import echo von 'laravel-echo'; window.pusher = required ('pusher-js'); window.echo = new echo ({{{ Sender: 'Pusher', Schlüssel: process.env.mix_pusher_app_key, Cluster: process.env.mix_pusher_app_cluster, forcetls: wahr, Authendpoint: '/Broadcasting/Auth',, });
Stellen Sie sicher, dass Sie den Pusher -Schlüssel in .env
offenlegen:
Mix_pusher_app_key = "$ {pusher_app_key}" Mix_pusher_app_cluster = "$ {pusher_app_cluster}"
Dann in Ihrer Vue/JS -Logik:
const app = new Vue ({{{ EL: '#App', Daten: { Nachrichten: [], NewMessage: '' }, montiert () { this.fetchMessages (); window.echo.join ('chat') .here ((Benutzer) => { console.log ('Benutzer online:', Benutzer); }) .Listen ('messagent', (e) => { this.messages.push (e.message); }); }, Methoden: { fetchMessages () { axios.get ('/message'). Dann (response => { this.messages = response.data; }); }, Nachricht senden() { axios.post ('/message', {message: this.newMessage}) .then (response => { this.newmessage = ''; }); } } });
8. Rennen und testen
Vermögenswerte kompilieren:
NPM Run Dev
Starten Sie den Laravel Development Server:
PHP Artisan Serve
Öffnen Sie zwei Browserfenster, melden Sie sich als verschiedene Benutzer an und testen Sie Echtzeit-Nachrichten.
Letzte Notizen
- Sichern Sie sich zur Produktion mit Authentifizierung.
- Berücksichtigen Sie die Rate -Beschränkung beim Senden von Nachrichten.
- Verwenden Sie
PresenceChannel
, um Online-Benutzer oderPrivateChannel
für 1-zu-1-Chats anzuzeigen. - Für selbst gehostete WebSocket-Server sollten Sie Soketi anstelle von Pusher verwenden.
Das Erstellen einer Echtzeit-Chat-App in Laravel ist nicht übermäßig komplex, wenn Sie den Fluss verstehen:
Der Benutzer sendet eine Nachricht → Controller speichert es → Ereignisübertragung IT → Echo hört und aktualisiert die Benutzeroberfläche.
Mit Laravel Echo und Pusher wird der größte Teil der harten Arbeit abstrahiert, sodass Sie sich auf UI und Benutzererfahrung konzentrieren können.
Grundsätzlich ist das es-Sie haben einen arbeitenden Echtzeit-Chat.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Echtzeit-Chat-Anwendung mit Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Konfigurations -Cache von Laravel verbessert die Leistung, indem alle Konfigurationsdateien in eine einzelne Cache -Datei zusammengeführt werden. Das Aktivieren von Konfigurations -Cache in einer Produktionsumgebung kann die E/A -Vorgänge reduzieren und die Analyse bei jeder Anforderung an die Datei -Analyse beschleunigen, wodurch das Laden der Konfiguration beschleunigt wird. 1. Es sollte aktiviert werden, wenn die Anwendung bereitgestellt wird, die Konfiguration stabil ist und keine häufigen Änderungen erforderlich sind. 2. Nachdem Sie die Konfiguration ändern können, müssen Sie PhPartiSanconFig: Cache erneut ausführen, um wirksam zu werden. 3. Vermeiden Sie die Verwendung dynamischer Logik oder Verschluss, die von Laufzeitbedingungen in der Konfigurationsdatei abhängen. 4. Bei Problembehebungsproblemen sollten Sie zuerst den Cache löschen, die .env-Variablen und den Umrand-Cache überprüfen.

Erstellen Sie Referenzen Tabelle, um Empfehlungsbeziehungen zu erfassen, einschließlich Empfehlungen, Empfehlungen, Empfehlungscodes und Nutzungszeit; 2. Definieren Sie die Beziehungen zwischen Hörern und Hasmany im Benutzermodell, um Empfehlungsdaten zu verwalten. 3. Erstellen Sie bei der Registrierung einen eindeutigen Empfehlungscode (kann durch Modellereignisse implementiert werden). 4. Erfassen Sie den Empfehlungscode, indem Sie die Parameter während der Registrierung abfragen, nach Überprüfung eine Empfehlungsbeziehung aufstellen und die Selbstverantwortung verhindern. 5. den Belohnungsmechanismus auslösen, wenn empfohlene Benutzer das angegebene Verhalten (Abonnementauftrag) abschließen; 6. Generieren Sie gemeinsame Empfehlungsverbindungen und verwenden Sie URLs mit Laravel Signature, um die Sicherheit zu verbessern. 7. Empfehlungsstatistiken auf dem Dashboard anzeigen, z. B. die Gesamtzahl der Empfehlungen und konvertierten Zahlen; Es ist notwendig, sicherzustellen, dass Datenbankbeschränkungen, Sitzungen oder Cookies bestehen bleiben.

CheckPhp> = 8.1, Komponist und Webserver; 2.CloneOrCreateProjectandruncompoSerinstall; 3.Copy.Env.Exampleto.EnvandrunphPartisanny : generieren; 4.setDatabasecredentialsin.envandrunphPartisanmigrate-seed; 5.StartServerWithPartisanServe; 6.OptionallyRunnpminpmin

Erstellen einer Seaskerdatei: Verwenden Sie PhPartisanMake: SeaseruSereDer, um die Säatorklasse zu generieren, und fügen Sie Daten über die Modellfabrik- oder Datenbankabfrage in der Run -Methode ein. 2. Rufen Sie einen anderen Säator in Databaseseeder an: Registrieren Sie den Benutzerseeder, Postseeder usw. Um sicherzustellen, dass die Abhängigkeit korrekt ist. 3. Ausführen von Sämaschinen: Führen Sie PhPartisandB aus: Saatgut, um alle registrierten Säter auszuführen, oder verwenden Sie Phpartisanmigrate: frisch-SEED, um die Daten zurückzusetzen und nachzufüllen; 4

Erstellen Sie ein neues Laravel -Projekt und starten Sie den Service. 2. Generieren Sie das Modell, die Migration und den Controller und führen Sie die Migration aus; 3. Definieren Sie die erholsame Route in Routen/api.php; V. 5. Verwenden Sie Postbote oder Curl, um die API -Funktion zu testen. 6. Fügen Sie optional die API -Authentifizierung durch Heiligtum hinzu; Erhalten Sie schließlich eine klare Struktur, vollständig und erweiterbar Laravelrestapi, geeignet für praktische Anwendungen.

ChooseseafatureFlagstrategyuchasconfig-basierte, datenbankgetriebene, orthird-partytools-ähnliche Flagsmith

Das Repository -Muster ist ein Entwurfsmuster, mit dem die Geschäftslogik aus der Datenzugriffslogik entkoppelt wird. 1. Es definiert Datenzugriffsmethoden über Schnittstellen (Vertrag); 2. Die spezifischen Vorgänge werden von der Repository -Klasse implementiert. 3. Die Controller verwendet die Schnittstelle durch Abhängigkeitsinjektion und kontaktiert nicht direkt die Datenquelle. 4. Vorteile sind ordentlicher Code, starke Testbarkeit, einfache Wartung und Teamzusammenarbeit; 5. Für mittlere und große Projekte können kleine Projekte das Modell direkt verwenden.

Eloquentorm ist das integrierte Relational Mapping-System von Laravel. Sie betreibt die Datenbank über PHP -Syntax anstelle von nativem SQL, wodurch der Code prägnanter und leicht zu warten ist. 1. Jede Datentabelle entspricht einer Modellklasse, und jeder Datensatz existiert als Modellinstanz. 2. Übernehmen Sie den aktiven Datensatzmodus, und die Modellinstanz kann selbst gespeichert oder aktualisiert werden. 3.. Support -Stapelzuweisung und das $ fillbare Attribut müssen im Modell definiert werden, um die Sicherheit zu gewährleisten. 4. Bieten Sie eine starke Beziehungsunterstützung wie eins zu eins, eins zu viele, viele zu viele usw., und Sie können über Methodenaufrufe auf die zugehörigen Daten zugreifen. 5. Integrierter Abfragekonstruktor, wo OrderBy und andere Methoden als Ketten bezeichnet werden können, um Abfragen zu erstellen; 6. Unterstützen Sie Zubehör und Modifikatoren, die die Nummer beim Erhalten oder Einlegen von Attributen formatieren können.
