2017-12-22 11 views
1

이것은 오랫동안 오랫동안 서 있던 문제이며, 여기에서 시작하기 전에 제가 시도한 것과 해결책을 찾은 곳이 있습니다.Laravel은 Pusher 이벤트를 사용하지 않습니다.

내 클러스터가 내가 사용하는 응용 프로그램에 대한 올바른 것을 확인했습니다 내가

을 시도했습니다 몇 가지 : 이 https://laracasts.com/discuss/channels/laravel/pusher-is-not-receiving-my-message?page=1
내 클러스터가 내가 'eu

입니다
https://laracasts.com/discuss/channels/laravel/echo-broadcast-event-listener-not-being-triggered .App.Events.DefaultPusherEvent, App\Events\DefaultPusherEvent, .DefaultPusherEvent 등 ...

: 네임 스페이스의 모든 변화를 시도했다

내 시나리오

그래서 내가 그렇게 결국 나는 우리가 미래에 필요한 어떤 다른 실시간 알림 +를 구현할 수 Laravel 및 푸셔를 사용하여 실시간 업데이트와 그립에 도착하는 것을 시도하고있다.

Laravel 설명서에 따라 내 푸시 응용 프로그램에 브로드 캐스팅 할 수있는 한 멀리 있습니다.

Its Working...

그래서 그게 내가 가진 유일한 문제는 실제로 Laravel의 에코 심지어 푸셔의 바닐라 코드를 사용하여이 이벤트를 소비하려고,이 모든 미세 아무 문제 없습니다.

나는 전에이 문제가 있었고 내 솔루션은 사설 채널을 사용하지 않는 것이 었습니다. (그들은 전혀 작동하지 않았기 때문에). 하지만 지금은 기능이 필요합니다. 진행

나는이 질문을 게시하기 전에 Laravel 새로 설치를 다시 만들어 다시 통해 다음,하지만 결과는 동일했다. 나는 사용자가 응용 프로그램에 로그인하지 않았기 때문에 사용자가 아니기 때문에 로그인 시스템을 만들지 않았습니다.

ListenForPusherEvents(){ 
    Echo.private(`datalev`) 
     .listen('DefaultPusherEvent', (e) => { 
      console.log(e); 
      console.log('Something'); 
     }); 
} 

또한 나는 이미이 비공개 채널에 대한 사용자를 인증하는 코드입니다 푸셔에게 'broadcasting/auth' 디렉토리

를 사용하여 사용자를 인증 말 그대로 콘솔 오류가 없습니다.

public function PusherAuthentication(Request $request) 
{ 
    $pusher = new Pusher(env('PUSHER_APP_KEY'), env('PUSHER_APP_SECRET'), env('PUSHER_APP_ID'), ['cluster' => 'eu']); 
    $pusher->socket_auth($request->input('channel_name'), $request->input('socket_id')); 
} 
+0

청취자를 첨부 할 Echo 코드는 함수에 있으며,이 함수는 언제 어떻게 호출됩니까? 그것은 준비가되어있는 이벤트에 있습니까? 'ListenForPusherEvents()'가 어느 시점에서 호출되고 있다는 긍정적입니까? 비공개 채널을 사용하지 않을 때 코드가 완전히 작동합니까? 인터넷 익스플로러는 공용 채널에서 청취하는 리스너로 에코 리스너를 대체합니다. 내가이 작업을했기 때문에 아이디어를 버리는 것뿐입니다. – Joe

+0

@Joe Im positive, 그것의 기능 때문에 그것의 vuejs, 나는 에코 코드와 로그가 표시되기 전에 console.log 수 있습니다. 나는 심지어 내 vue.js 코드 밖으로 이동했습니다 그리고 그것은 여전히 ​​작동하지 않습니다. –

+0

요청을 승인하도록 라우드벨에게 아약스 요청이 표시됩니까? CSRF도 가져 왔고 긴 메시지를 보내야했기 때문에 필자의 수작업을 수동으로 설정했습니다 ... –

답변

2

브로드 캐스트/인증 경로가 auth 키를 사용하여 JSON 개체를 올바르게 반환하는지 확인하십시오. 이것은 Pusher에서 채널 구독을 인증하는 데 사용됩니다.

  1. 고객이 구독하고 싶어하고 괜찮아 경우 (은/방송/인증의 AJAX 호출)

  2. 당신의 Laravel은 괜찮아 및 정보 용 확인 Laravel을 묻는 다음과 같이

    프로세스는 미는 사람; AJAX

  3. 을 통해 클라이언트로 다시 전송되는 고유 한 인증 키를 얻게됩니다. 그러면 JavaScript가 Laravel에서받은 인증 키를 사용하여 Pusher 채널에 가입 할 수 있습니다. 푸셔, 그래서 푸셔는 그것을 받아 들일 것입니다.