sql >> Databáze >  >> NoSQL >> Redis

Chcete implementovat webové sokety v Laravelu

Používali jste pusher, takže předpokládám, že víte, jak používat událost.

Doporučuji vám laravel-echo-server. Použití je velmi snadné, s vestavěným rozhraním API.

Zde je čerstvý příklad projektu laravel-echo od nuly. Po nastavení projektu.

budete potřebovat predis, pokud jste jej ještě nenainstalovali

composer require predis/predis
redis-server /usr/local/etc/redis.conf
  1. spusťte npm install -g laravel-echo-server
  2. spusťte laravel-echo-server init
  3. zrušte komentář App\Providers\BroadcastServiceProvider::class v config/app.php
  4. přidat <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/socket.io.js"></script> ve vašem app.blade.php
  5. potřebujete klienta socketio, můžete spustit npm install --save laravel-echo .V případě, že nejste obeznámeni s npm nebo vue, můžete jednoduše zahrnout tento kompilovaný soubor z mého projektu github.compiledjs
  6. přidejte to do app.blade.php

    <script>
    window.Echo = new Echo({
    broadcaster: 'socket.io',
    
    host: '{{url('/').':6001'}}',
    });
    Echo.private(`App.User.{{Auth::id()}}`) // private channel
    .listen('NewMessage', (e) => {
        console.log(e)
    
    });
    
    
    </script>
    
  7. nakonec spusťte laravel-echo-server start a otevřete svůj projekt, uvidíte

    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE authenticated for: private- 
       App.User.1
    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE joined channel: private-App.User.1
    
  8. můžete poslouchat libovolnou událost nebo jiná oznámení

  9. zde je můj příklad echa projektu github

přidejte malý kód, abyste mohli použít pošťák k odeslání zprávy konkrétnímu uživateli. Zprávu můžete vidět z konzole Chrome. Další podrobnosti můžete získat ze snímků obrazovky projektu github



  1. Jak obnovit hash sloty konkrétního uzlu v clusteru redis v případě těžkého selhání?

  2. $push a $set ve stejné aktualizaci MongoDB

  3. Škálování Socket.IO na více procesů Node.js pomocí clusteru

  4. MongoDB $dayOfMonth