为什么我的Laravel echo中的.listen调用在我的Angular前端中不起作用?

时间:2019-04-08 11:05:10

标签: angular ionic-framework websocket echo

我正在编写一些前端代码,试图使用Pusher和laravel监听Websocket。我无法触发监听事件。

我在页面中收到websocket信息:

请求URL:ws:// localhost:6001 / app / someKey?protocol = 7&client = js&version = 4.4.0&flash = false

当我触发一个新事件时,这是浏览器中的websocket输出:

channel: "chat"
data: "{"user":{"id":1,"name":"1","email":"1","balance":"79558.76450989","default_leverage":"20","used_margin":"3074.6057739400","email_verified_at":null,"is_fake":"yes","created_at":"2019-03-07 11:47:22","updated_at":"2019-04-08 10:54:02"},"message":{"id":82,"user_id":1,"group_id":1,"text":"test text here","created_at":"2019-04-08 10:55:21","updated_at":"2019-04-08 10:55:21"}}"
event: "App\Events\MessageSent" 

这是我的ts代码(ionic-v4):

import { Injectable } from '@angular/core';
import {Echo} from 'laravel-echo-ionic';

@Injectable({
  providedIn: 'root'
})
export class PusherService {

  echo:any;

  constructor( ) {
    console.log("Pusher Service");
    var pusher = require('pusher-js');
    this.echo = new Echo({
      broadcaster: 'pusher',
      wsHost: 'localhost',
      wsPort: 6001,
      key: 'someKey',
      encrypted: false,
      enabledTransports: ['ws'],
    });
    this.echo.channel('chat').listen('App\Events\MessageSent', (e) => { 
      console.log('got message')  ;
    });  
  }
}

我没有输出控制台日志...有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

好的,我已经开始工作了。

对于将来遇到其他问题的人,您可以只听事件'MessageSent';您不需要完整的路径。即

    this.echo.channel('chat').listen('MessageSent', (e) => { 
      console.log('got message')  ;
    }); 

将起作用。