In Echtzeit-Webanwendungen ist die Übertragung von Ereignissen eine der sehr wichtigen Funktionen. Das Laravel-Framework bietet sofort einsatzbereite Event-Broadcasting-Funktionen, und Event-Broadcasting und -Überwachung können einfach über Laravel Broadcasting implementiert werden. In diesem Artikel wird erläutert, wie Sie mit Laravel Broadcasting die Übertragung von Ereignissen implementieren.
1. Verständnis der Ereignisübertragung
Wenn in Webanwendungen ein Ereignis eintritt, z. B. eine erfolgreiche Benutzerregistrierung, eine Artikelveröffentlichung usw., hoffen wir, dass andere Benutzer rechtzeitig relevante Informationen erhalten können. Wenn Sie derzeit die herkömmliche Seitenaktualisierungs- oder Ajax-Abfragemethode verwenden, verbraucht diese viel Bandbreite und Serverressourcen und kann den Echtzeitbedarf nicht decken. Event-Broadcasting kann dieses Problem lösen.
Bei der Ereignisübertragung wird ein Ereignis an einen bestimmten Kanal oder eine bestimmte Übertragungsgruppe gesendet. Anschließend können Benutzer, die den bestimmten Kanal oder die bestimmte Übertragungsgruppe überwachen, sofort relevante Informationen empfangen. Durch Event-Broadcasting kann die Anzahl der Kommunikationen zwischen Server und Client erheblich reduziert, Netzwerklatenz und Bandbreitenverbrauch reduziert sowie die Leistung und Benutzererfahrung von Webanwendungen verbessert werden.
2. Installieren Sie Laravel Broadcasting
Bevor Sie Laravel Broadcasting verwenden, müssen Sie Laravel Echo und die zugehörigen Broadcast-Treiber installieren. Laravel Echo ist die Socket.io-Clientbibliothek, die mit dem Laravel-Framework geliefert wird und für die Echtzeitkommunikation mit Broadcast-Diensten verwendet wird. Der Broadcast-Treiber stellt APIs für die Interaktion mit verschiedenen Broadcast-Diensten wie Redis und Pusher bereit. In diesem Artikel verwenden wir Pusher als Broadcast-Dienst.
npm install --save laravel-echo pusher-js
AppProvidersBroadcastServiceProvider::class,
BROADCAST_DRIVER=pusher PUSHER_APP_ID=your-app-id PUSHER_APP_KEY=your-app-key PUSHER_APP_SECRET=your-app-secret
php artisan make:event UserRegistered
namespace AppEvents; use AppUser; use IlluminateQueueSerializesModels; use IlluminateFoundationEventsDispatchable; class UserRegistered { use Dispatchable, SerializesModels; public $user; /** * Create a new event instance. * * @param AppUser $user * @return void */ public function __construct(User $user) { $this->user = $user; } /** * Get the channels the event should broadcast on. * * @return IlluminateBroadcastingChannel|array */ public function broadcastOn() { return new Channel('user.'.$this->user->id); } }
use IlluminateSupportFacadesBroadcast; use AppBroadcastingUserChannel; Broadcast::channel('user.{userId}', UserChannel::class);
Ändern Sie die Konfigurationsdatei
Fügen Sie zunächst den folgenden Code in die Datei resources/assets/js/bootstrap.js ein:namespace AppBroadcasting; use AppUser; class UserChannel { /** * Create a new channel instance. * * @param AppUser $user * @return void */ public function __construct(User $user) { $this->user = $user; } /** * Authenticate the user's access to the channel. * * @return array|bool */ public function join(User $user, $userId) { return $user->id === (int) $userId; } }
Erstellen Sie einen Listener
namespace AppHttpControllers; use AppUser; use AppEventsUserRegistered; use IlluminateHttpRequest; class UserController extends Controller { /** * Register a new user. * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse */ public function register(Request $request) { $user = new User([ 'name' => $request->input('name'), 'email' => $request->input('email'), 'password' => bcrypt($request->input('password')), ]); $user->save(); event(new UserRegistered($user)); return response()->json([ 'message' => 'User registered successfully!', 'user' => $user, ]); } }
Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie kann man mit Laravel Broadcasting Event-Broadcasting implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!