larave echo, socket.io, redis
                  
                  
                  
                  
                  
                      window.Echo = new Echo({
                  
                  
                          broadcaster: 'socket.io',
                  
                  
                          host: window.location.hostname + ':6001',
                  
                  
                      });
                  
                  
                  
                  
                  
                  в компоненте vue устанавливается прослушка
                  
                  
                  ...
                  
                  
                          mounted() {
                  
                  
                              window.Echo.channel('chat.1')
                  
                  
                              .listen('Message', ({message}) => {
                  
                  
                                  console.log(message);
                  
                  
                              });
                  
                  
                          },
                  
                  
                  ...
                  
                  
                  
                  
                  
                  
                  
                  
                  config/database.php - 'prefix' => '',`
                  
                  
                  
                  
                  
                  
                  
                  
                  роутинг для теста
                  
                  
                  Route::post('messages', function(\Illuminate\Http\Request $request) {
                  
                  
                      App\Events\Message::dispatch($request->input('body'));
                  
                  
                  });
                  
                  
                  класс события
                  
                  
                  class Message implements ShouldBroadcast
                  
                  
                  {
                  
                  
                      use Dispatchable, InteractsWithSockets, SerializesModels;
                  
                  
                  
                  
                  
                      public $message;
                  
                  
                  
                  
                  
                      public function __construct($message)
                  
                  
                      {
                  
                  
                          $this->message = $message;
                  
                  
                  //        $this->dontBroadcastToCurrentUser();
                  
                  
                      }
                  
                  
                  
                  
                  
                      public function broadcastOn()
                  
                  
                      {
                  
                  
                          return new Channel('chat.1');
                  
                  
                      }
                  
                  
                      public function broadcastAs()
                  
                  
                      {
                  
                  
                          return 'Message';
                  
                  
                      }
                  
                  
                  }
                  
                  
                  в консоли очереди отрабатываются
                  
                  
                  [2022-04-08 11:04:41][BIQ6ZW8soYu2CybvBLHdm5EZ0QO76R6i] Processing: App\Events\Message
                  
                  
                  [2022-04-08 11:04:41][BIQ6ZW8soYu2CybvBLHdm5EZ0QO76R6i] Processed:  App\Events\Message
                  
                  
                  в консоли echo сервера тоже отрабатываются
                  
                  
                  
                  
                  
                  Server ready!
                  
                  
                  
                  
                  
                  Channel: chat.1
                  
                  
                  Event: Message
                  
                  
                
а в браузере коннект поднимается? во вкладке network фильтр ws
с redis впервые столкнулся, можно подробнее?
куда подробнее, запускаешь в консоли redis-cli потом после подключения вводишь PSUBSCRIBE * он начинает слушать ивенты и ты можешь послать ивент из пхп и посмотреть что прилетело в redis pub/sub
Обсуждают сегодня