Ошибка Echo.private и / broadcasting / auth 405 - PullRequest
0 голосов
/ 11 января 2019

На форуме Vuejs / Larvel я вижу следующую ошибку при отображении вопроса и его ответов:

POST http://127.0.0.1:8000/broadcasting/auth 405 (Method Not Allowed)

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

Соответствующие (я надеюсь) выдержки из кода:

bootstrap.js

import Echo from 'laravel-echo'

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'myKey',
    wsHost: window.location.hostname,
    wsPort: 6001,
    disableStats: true,
    auth:{
        headers:{
            Authorization: JWTtoken
        }
    }
});

channels.php

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


Broadcast::channel('likeChannel', function () {
  return true;
});

replies.vue

<template>
    <div>
        <p v-if="comments>0"><em>{{$t('Comments')}}</em></p>
        <reply
            v-for="(r,index) in content"
            :key="r.id"
            :index=index
            v-if="question.replies"
            :data="r"
        ></reply>
    </div>
</template>

<script>
    import Reply from './Reply';
    import { eventBus } from '../../app';
  export default {
    name: "Replies",
    props: ['question'],
    components: {Reply},
    data(){
      return {
        content:this.question.replies,
        comments:this.question.replies.length,
      }
    },
    created(){
      this.listen();
    },
    methods: {
      listen(){
        console.log('userID='+this.UserID)

        Echo.private('App.User.' + this.UserID)
          .notification((notification) => {
            console.log('Replies 36; Notification type: '+ notification.type);
            this.content.unshift(notification.reply)
          });

        eventBus.$on('replyCreated',(reply)=>{
          this.content.unshift(reply) //unshift adds item to top of array
        });
        eventBus.$on('deleteReply',(index) => {
          axios.delete(`api/question/${this.question.slug}/reply/${this.content[index].id}`)
            .then(res => {
              this.content.splice(index,1);
            }
          )
        });
      },
    },
    computed: {
      UserID: function () {
        var tk = localStorage.getItem('token');
        var payload = tk.split('.')[1];
        var pl = JSON.parse(atob(payload));
        return pl.sub;
      },
    }
  }
</script>

<style scoped>

</style>

Закомментирование всего материала Echo.private устраняет ошибку; комментирование только части .notification не имеет того же эффекта, предполагая, что это не содержание «уведомления».

Очевидно, я показал себя новым и потерянным в космосе; возможно, то, что я вижу, является следствием проблемы в другом месте, но я не знаю, где искать в другом месте.

Спасибо, Том

...