1

我正在使用 Laravel 事件广播,我正在使用推送器驱动程序来广播事件并且它工作得很好。

js使用推送器提供的库从客户端成功订阅公共频道

var pusher = new Pusher('xxxxxxxxxxxxxxxxxxxxx_my_app_key', {
    encrypted: true
});

var channel = pusher.subscribe('TestPusher');
    channel.bind('App\\Events\\TestPusher', function(data) {
alert(data.msg);
}); 

但是当我在客户端代码中使用 Echo 时

Echo.channel('TestPusher')
    .listen('TestPusher', (e) => {
        console.log(e.msg, e.chatMessage);
    });

它会生成错误“未定义回声”。

我已经在我的应用程序中安装了 Laravel Echo 库,并且还根据 laravel 提供的文档npm install --save laravel-echo pusher-js在文件中包含了以下代码。resources/assets/js/bootstrap.js

import Echo from "laravel-echo"

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'xxxxxxxxxxxxxxxxxxxxx_my_app_key'
});

所以请帮助我如何解决这个问题。

4

5 回答 5

1

我的问题是我没有bootstrap.js与其余代码一起编译,因为我已经require('./bootstrap')app.js. 我把那条线加回去了,我在家干了。 如此处所述

于 2018-03-07T09:10:34.817 回答
0

您的代码看起来不错,问题是您的 JS 订单,所以只有您遇到未定义的问题

喜欢

<script>
Echo.channel('TestPusher')
    .listen('TestPusher', (e) => {
        console.log(e.msg, e.chatMessage);
    });
</script>


<script src="echo.js"></script>

所以曲折的顺序:)

于 2017-05-17T12:23:54.437 回答
0

几天前我遇到了这个问题。我的 gulp 安装一团糟,Laravel 版本控制没有帮助。

抱歉,如果这没有帮助,这只是我的经验,并且尽可能详细:

首先,我认为您的站点中确实包含 js/app.js 脚本。

现在,您会看到此错误,因为正如 Josh 所提到的,您没有编译 js 文件。编辑 'resources/assets/js/bootstrap.js' 后,需要通过运行资产编译器来编译该文件gulp:(在 Laravel 5.3 中名为 Laravel Elixir docs/5.3/elixir)。

如果你仔细阅读这部分教程,你会特别小心 laravel 的 npm 依赖版本,特别是 Elixir 使用的那些(再一次,我的 gulp 安装根本不工作,即使没有出现错误消息)。

所以,如果这是一个新项目,你应该考虑更新到 Laravel 5.4。如果您不能或不愿意更新所有 Laravel 框架,也许可以像我一样解决。保持在 5.3,但使用 5.4 上最新的资产编译器,名为Laravel Mix。现在它在 npm: 上运行npm run dev。(文档中没有提到 gulp。)

为此,您应该更新5.4 上的最新 package.json按照5.4 文档安装 Laravel Mix。

于 2017-02-14T05:03:01.333 回答
0

从你的 app.js 脚本标签中删除 defer

  <!-- Scripts -->
  <script src="{{ asset('js/app.js') }}" defer></script>
于 2021-11-24T00:33:37.533 回答
0

每个 Echo 之前的寡妇对象。

window.Echo.channel('TestPusher')
    .listen('TestPusher', (e) => {
        console.log(e.msg, e.chatMessage);
    });
于 2017-05-19T12:03:44.933 回答