Laravel не слушает слушать трансляции событий?Вю / Echo / Pusher - PullRequest
1 голос
/ 25 апреля 2019

Я реализую компонент обмена сообщениями Vue в моем приложении laravel.Сообщения успешно отправляются в Pusher, как видно из консоли отладки, но я три дня пытался заставить их слушать, чтобы пользователи на одном и том же частном канале могли получать сообщения.

Это приложение основано на github https://github.com/AfikDeri/Messenger-App-VueJS-and-Laravel

Я дважды проверил все ключевые области кода, в которых может быть ошибка, но не могу найти проблему.

Очистили кеш и конфигурацию в Laravel и перекомпилировали код Javascript несколько раз.Я тестирую на версии XAMPP: 7.2.12 / windows 7.

Попытался отключить брандмауэр Windows и антивирус Avast.

Сообщения принимаются в консоли отладки Pusher и такжедобавляется в базу данных через axios и отправляется обратно в отправляющее клиентское приложение и помещается в массив сообщений отправителя.Они просто не были видны получателю, и я не вижу никаких следов трансляции событий в chrome.

ChatApp.vue

<template>
    <div class="chat-app">
        <conversation :contact="selectedContact" :messages="messages" @new="saveNewMessage"></conversation>
        <contacts-list :contacts="contacts" @selected="startConversationWith"></contacts-list>
    </div>
</template>
<script>

export default{
    props:{
        user:{
            type: Object,
            required:true
        }
    },

    data(){
        return{
            selectedContact: null,
            messages: [],
            contacts: [],
        }
    },
    mounted(){

        Echo.private(`messages.${this.user.id}`)
            .listen('NewMessage', (e) => {
             //   console.log('Broadcast received.');
                this.handleIncoming(e.message);
            });
         axios.get('/contacts')
             .then((response) => {
                 console.log(response.data);
                 this.contacts = response.data;
         });

    },

    methods:{
        startConversationWith(contact){
            axios.get(`/conversation/${contact.id}`)
                .then((response) =>{
                    this.messages = response.data;
                    this.selectedContact = contact;
                    }

                )
        },
        saveNewMessage(message){
            this.messages.push(message);
        },
        handleIncoming(message) {
                alert(JSON_stringify(message));
            if (this.selectedContact && message.from_id == this.selectedContact.id) {
                this.saveNewMessage(message);
                return;
            }

        },
    }

  }
</script>

В App \ Events \ NewMessage.php

namespace App\Events;

use App\Message;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class NewMessage implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;

    public function __construct(Message $message)
    {
        $this->message = $message;
    }

    public function broadcastOn()
    {
        return new PrivateChannel('messages.' . $this->message->to_id);
    }

    public function broadcastWith()
    {
        $this->message->load('fromContact');

        return ["message" => $this->message];
    }
}

в bootstrap.js


import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({

    broadcaster: 'pusher',
    //   key: process.env.MIX_PUSHER_APP_KEY,
    //cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    key: '455936d5b071dd92ef25',
    cluster: 'us3',
    encrypted: false
});
require('./echo');
console.log(window.Echo.options);

в App / config / app.php

 Illuminate\Broadcasting\BroadcastServiceProvider::class,

 App\Providers\BroadcastServiceProvider::class,

// Are uncommented


в BroadcastServiceProvider

public function boot()
    {
     // Broadcast::routes(); 

/*changed this to fix a pusher auth error
     only prob is it routes pusher to /home after authentication but without error */

        Broadcast::routes(['middleware' => 'auth']);
        require base_path('routes/channels.php');
    }

в channel.php:

Broadcast::channel('messages.{$id}', function ($user, $id) {
    //dd($user->id, $id);
    return $user->id === (int) $id;
});

В ContactController

 public function send(Request $request){
       $message = new Message();
       $message->from_id = auth()->user()->id;
       $message->to_id = $request->contact_id;
       $message->text = $request->text;
       $message->conversation_id = 1;

       if($message->save()) {

           broadcast(new NewMessage($message));
           return response()->json($message);
       }
       else{
           return response()->json('failed');
       }

В chrome> я вижу эти сообщения

Pusher : State changed : connecting -> connected with new socket ID 52.5078004

registerEventsMessage called  

//I think the next error is when I refreshed the browser forcing the Vue app to reconnect.

{event: "pusher:error", data: {code: 4009, message: "Connection not authorized within timeout"}}
data: {code: 4009, message: "Connection not authorized within timeout"}
event: "pusher:error"

//This appeared initially but not when messages were sent

No callbacks on presence-chat for pusher:subscription_error  
No callbacks on private-messages.14 for pusher:subscription_error

Приложение чата должно обновляться вчат-поток получателей, когда новое сообщение отправляется на их канал, но ничего не происходит.Я не вижу ошибок в консоли Chrome.Идентификаторы пользователей и имена динамических каналов отображаются правильно.

Я вижу эту ошибку, когда обновляю браузер, но после этого кажется, что сообщения работают нормально.В консоли толкателя не отображаются ошибки, и я вижу, что все сообщения там получены.

Я относительно новичок в Laravel, и Вью будет очень признательна за любую помощь или руководство по устранению неполадок.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Мне интересно, у меня не открыты правильные порты с xampp? Какие порты прослушивает pusher / echo?

C: \ Users \ Rob> netstat -a -p TCP -o -n

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2112
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       516
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       2112
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       10832
  TCP    0.0.0.0:8733           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:9007           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:27275          0.0.0.0:0              LISTENING       1568
  TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING       796
  TCP    0.0.0.0:49153          0.0.0.0:0              LISTENING       892
  TCP    0.0.0.0:49154          0.0.0.0:0              LISTENING       1088
  TCP    0.0.0.0:49157          0.0.0.0:0              LISTENING       864
  TCP    0.0.0.0:49158          0.0.0.0:0              LISTENING       852
  TCP    0.0.0.0:49159          0.0.0.0:0              LISTENING       1100
  TCP    127.0.0.1:3306         127.0.0.1:53658        TIME_WAIT       0
  TCP    127.0.0.1:5354         0.0.0.0:0              LISTENING       2012
  TCP    127.0.0.1:5354         127.0.0.1:49155        ESTABLISHED     2012
  TCP    127.0.0.1:5354         127.0.0.1:49156        ESTABLISHED     2012
  TCP    127.0.0.1:5939         0.0.0.0:0              LISTENING       2396
  TCP    127.0.0.1:5939         127.0.0.1:49263        ESTABLISHED     2396
  TCP    127.0.0.1:6942         0.0.0.0:0              LISTENING       7956
  TCP    127.0.0.1:8000         0.0.0.0:0              LISTENING       8212
  TCP    127.0.0.1:8000         127.0.0.1:53643        TIME_WAIT       0
  TCP    127.0.0.1:8000         127.0.0.1:53649        TIME_WAIT       0
  TCP    127.0.0.1:8000         127.0.0.1:53690        TIME_WAIT       0
  TCP    127.0.0.1:8000         127.0.0.1:53691        TIME_WAIT       0
  TCP    127.0.0.1:8000         127.0.0.1:53726        TIME_WAIT       0
  TCP    127.0.0.1:8000         127.0.0.1:53728        ESTABLISHED     8212
  TCP    127.0.0.1:8000         127.0.0.1:53733        TIME_WAIT       0
  TCP    127.0.0.1:12025        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:12110        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:12119        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:12143        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:12465        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:12563        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:12993        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:12995        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:27015        0.0.0.0:0              LISTENING       1980
  TCP    127.0.0.1:27275        0.0.0.0:0              LISTENING       1568
  TCP    127.0.0.1:49155        127.0.0.1:5354         ESTABLISHED     1980
  TCP    127.0.0.1:49156        127.0.0.1:5354         ESTABLISHED     1980
  TCP    127.0.0.1:49263        127.0.0.1:5939         ESTABLISHED     1684
  TCP    127.0.0.1:49269        127.0.0.1:49270        ESTABLISHED     1684
  TCP    127.0.0.1:49270        127.0.0.1:49269        ESTABLISHED     1684
  TCP    127.0.0.1:49541        127.0.0.1:49542        ESTABLISHED     7956
  TCP    127.0.0.1:49542        127.0.0.1:49541        ESTABLISHED     7956
  TCP    127.0.0.1:49543        127.0.0.1:49544        ESTABLISHED     7956
  TCP    127.0.0.1:49544        127.0.0.1:49543        ESTABLISHED     7956
  TCP    127.0.0.1:53644        127.0.0.1:8000         TIME_WAIT       0
  TCP    127.0.0.1:53650        127.0.0.1:8000         TIME_WAIT       0
  TCP    127.0.0.1:53657        127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:53658        127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:53692        127.0.0.1:8000         TIME_WAIT       0
  TCP    127.0.0.1:53693        127.0.0.1:8000         TIME_WAIT       0
  TCP    127.0.0.1:53728        127.0.0.1:8000         ESTABLISHED     7764
  TCP    127.0.0.1:53735        127.0.0.1:8000         TIME_WAIT       0
  TCP    127.0.0.1:53760        127.0.0.1:9229         SYN_SENT        5912
  TCP    127.0.0.1:63342        0.0.0.0:0              LISTENING       7956
  TCP    192.168.1.116:139      0.0.0.0:0              LISTENING       4
  TCP    192.168.1.116:49236    77.234.41.235:80       ESTABLISHED     1568
  TCP    192.168.1.116:50809    66.135.205.94:443      ESTABLISHED     1136
  TCP    192.168.1.116:53013    23.35.181.178:443      ESTABLISHED     7764
  TCP    192.168.1.116:53025    54.186.190.8:443       ESTABLISHED     7764
  TCP    192.168.1.116:53456    192.184.69.164:443     CLOSE_WAIT      7764
  TCP    192.168.1.116:53460    23.220.197.16:443      ESTABLISHED     7764
  TCP    192.168.1.116:53461    151.101.65.69:443      ESTABLISHED     7764
  TCP    192.168.1.116:53463    104.16.31.34:443       ESTABLISHED     7764
  TCP    192.168.1.116:53475    192.184.69.180:443     CLOSE_WAIT      7764
  TCP    192.168.1.116:53476    172.217.1.226:443      ESTABLISHED     7764
  TCP    192.168.1.116:53481    77.234.41.223:443      CLOSE_WAIT      7764
  TCP    192.168.1.116:53487    172.217.9.2:443        ESTABLISHED     7764
  TCP    192.168.1.116:53504    108.177.9.157:443      ESTABLISHED     7764
  TCP    192.168.1.116:53506    172.217.14.162:443     ESTABLISHED     7764
  TCP    192.168.1.116:53511    192.184.69.150:443     CLOSE_WAIT      7764
  TCP    192.168.1.116:53627    213.227.173.132:5938   ESTABLISHED     2396
  TCP    192.168.1.116:53631    23.52.96.18:80         TIME_WAIT       0
  TCP    192.168.1.116:53722    34.222.204.130:80      ESTABLISHED     7764
  TCP    192.168.1.116:53727    34.222.204.130:80      ESTABLISHED     7764
  TCP    192.168.1.116:53742    77.234.41.53:80        TIME_WAIT       0
  TCP    192.168.1.116:53744    77.234.41.56:80        TIME_WAIT       0
0 голосов
/ 25 апреля 2019

явно чего-то не хватает.так как вы следите за вопросами по проверке учебника https://github.com/AfikDeri/Messenger-App-VueJS-and-Laravel/issues

...