Laravel 5.4 事件广播不适用于 vuejs

2023-11-30

我想用 laravel 5.4、vuejs 和带有 Echo 的 Pusher api 创建聊天。我做了两次与 Pusher 沟通,但我没有回调和我的 vue.js 文件。如果有帮助的话,我在当地与 MAPM 合作。

我已经安装了

composer require pusher/pusher-php-server
npm install --save laravel-echo pusher-js

我把这个放在我的刀片上

<meta name="csrf-token" content="{{ csrf_token() }}">

在我的 bootstrap.js 中,我取消了 Echo 的注释,并且输入了我的推送键

import Echo from "laravel-echo"

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

我的广播配置

'default' => env('BROADCAST_DRIVER', 'null'),
    'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
             //
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],

        'log' => [
            'driver' => 'log',
        ],

        'null' => [
            'driver' => 'null',
        ],

    ],

my .env

BROADCAST_DRIVER=log
PUSHER_APP_ID=my id key
PUSHER_APP_KEY=my app key
PUSHER_APP_SECRET=my secret key

和我的 app.js

const root = new Vue({
    el: '#root',

    data: {

        messages: []
    },

    methods: {
        addMessage(message){
            this.messages.push(message);

            axios.post('/messages', message).then(response => {

            });
        }
    },

    created() {

        axios.get('/messages').then(response => {
            this.messages = response.data;
        });


        Echo.join('chatroom')
            .here()
            .joining()
            .leaving()
            .listen('MessagePosted', (e) => {
                console.log(e);
        });
    }
});

我的控制器

public function store(Request $request){

        $user = Auth::user();

        $message = $user->messages()->create([
            'message' => $request->message
        ]);


        event(new MessagePosted($message, $user));
        return ['status' => 'OK'];

    }

我的活动

namespace App\Events;

use App\Message;
use App\User;
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 MessagePosted implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;


    public $message;
    public $user;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Message $message, User $user)
    {
        $this->message = $message;
        $this->user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        return new PresenceChannel('chatroom');
    }
}

和通道路线

Broadcast::channel('chatroom', function ($user) {
    return $user;
});

1) 让我们从您的 .env 文件开始

BROADCAST_DRIVER =pusher // instead of log

2)配置/应用程序.php

App\Providers\BroadcastServiceProvider::class, //Uncomment it out

3)配置/广播.php

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'cluster' => 'mt1', //mt1 is for east united state, eu for europe. 
    ],
],

除了应用程序名称之外,您还可以在推送器仪表板中找到集群信息

4)bootstrap.js文件

window.axios.defaults.headers.common = {
    // 'X-CSRF-TOKEN': window.Laravel.csrfToken, <-- Comment it out (if you are extending layouts.app file, you won't require this.)
    'X-Requested-With': 'XMLHttpRequest'
};

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'YOUR_PUSHER_KEY',
    cluster: 'mt1',
    encrypted : true
});

5)通过以下代码更改chat.blade.php。

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        Chatroom
                    </div>

                    <div id="app">
                        <chat-log :messages="messages"></chat-log>
                        <chat-composer v-on:messagesent="addMessage"></chat-composer>
                    </div>

                </div>
            </div>
        </div>
    </div>
@endsection
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5.4 事件广播不适用于 vuejs 的相关文章

  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 更改 Woocommerce 中“我的帐户”页面上的标题

    我见过大量有关如何使用 WooCommerce 我的帐户仪表板重新排序 更改导航和页面的示例 但我一生都无法弄清楚如何更改每个部分的主要标题 我的帐户 订单 下载 地址等 我已经搜索过模板 但没有任何乐趣 我尝试使用条件 php 注释来回显
  • 如何在 Vue.js 中将 InnerHtml 复制到剪贴板?

    我想将此 for 循环的内容复制到剪贴板中 div class links div class row p makeUrl name p div div
  • php源代码到PO文件生成器

    我必须将我的所有回显 打印字符串转换为PHP源代码代码文件到PO file 为了语言翻译 有批次吗对流器可用于相同的 我如何做到这一点 make gettext在您的服务器上运行 setup a 翻译适配器 例如带有 gettext 适配器
  • 使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

    将图像从 PNG 转换为 JPEG 时 如何使用 ImageMagick 带有 php 扩展 将透明背景设置为白色 在撰写本文时 您尚未指定正在使用哪个扩展 但如果您使用命令行 则命令将是 convert image png backgro
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 如何隐藏 URL 中的锚标记

    如何隐藏地址栏中以下链接 href 的哈希值 a href index php dev name 所以它会将我重定向到index php dev name 但我希望地址栏只显示index php 您可以使用 Javascript oncli
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • Google Cloud SQL 上的故障转移如何运作?

    我打算将 PHP 应用程序 从 Google Cloud Platform 外部的服务器 连接到 Google Cloud SQL 我想知道如何设计应用程序以正确地对其数据库进行故障转移 根据manual https cloud googl
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • 使用 Instagram Basic Display API 时出现“无效平台应用程序”错误

    我正在尝试使用 Instagram Basic 显示 API 但是当我发布授权代码以获取访问令牌时 我不断收到以下错误 error type OAuthException 代码 400 error message 平台应用无效 我正在遵循此
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • PHP 扩展开发入门 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 请推荐有关 PHP 低 级 modules 编程接口的帮助文章或教程 搜索我的书签 我发现的唯一链接是
  • Facebook PHP SDK - 如何获取访问令牌?

    我正在尝试从我的应用程序在用户的 Facebook 墙上发帖 用户授予应用程序在他的墙上发布的权限 并且我在数据库中有用户ID 我需要自动发送帖子 而无需用户再次登录 我的代码是 try require once dirname FILE
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • 如何将 Smarty 3 包含到 Laravel 4 中?

    我是 Laravel 的新手 所以仍在习惯这些概念 但是我有大约 10 年的使用 Smarty 的经验 所以我希望利用这一点 除了事实上 Blade 似乎缺乏太多我发现有用且在 Smarty 中开箱即用的功能 但无论如何除了这个问题的要点之
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • 即使关闭应用程序,列表视图突出显示的所选项目仍然保留

    我在如何保存和读取列表视图中突出显示的项目时遇到了麻烦 我使用下面的共享首选项 但我不知道下一步 请帮助我如何做到这一点 非常感谢任何帮助 Image ArrayList
  • 使用python创建多列的虚拟变量

    我正在处理一个包含两列 ID 号的数据框 为了进一步研究 我想为这些 ID 号 带有两个 ID 号 制作一种虚拟变量 但是 我的代码不会合并两个数据帧中的列 如何合并两个数据帧中的列并创建虚拟变量 数据框 import pandas as
  • iOS 7(非越狱)Wi-Fi RSSI 值

    是否可以在未越狱的 iOS 7 设备上获取 Wi Fi RSSI 值 我读到了 MobileWiFi framework 和Apple80211功能 如果我理解正确的话 它们在没有越狱的情况下无法工作 我不想在 App Store 上发布我
  • 使用 lighttpd 重写 - 如何删除文件扩展名

    我想使用lighttpd的mod rewrite来允许没有特定文件扩展名的请求 例如 我希望以下映射自动工作 请求 index 将提供 index php dir file gt dir file php dir file args gt
  • 如何堆叠与前一个矩形高度相应的矩形?

    我尝试制作一个简单的列视觉效果 其中矩形的高度由比例决定 var heightScale d3 scaleLinear domain 150 2500 range 10 80 我的代码是这样的 var margins top 100 lef
  • Tkinter 中的多个窗口?

    我是编程新手 很难找到教如何创建使用多个窗口的 GUI 的教程 例如 如果用户单击 查找 按钮 则会弹出一个包含搜索结果的窗口 我该如何实现这个目标 这在 Tkinter 中可能吗 任何对来源的建议 参考将不胜感激 谢谢 要创建您的第一个窗
  • 使用JQuery跨域获取Xml数据

    有没有办法用JQuery 客户端 跨域加载XML数据 get http otherdomain com data xml function xml 上面的方法不起作用 我是否必须依赖 JSONP 或者有没有办法加载 XML 无法加载 XML
  • 如何在 JFrame 中使用 setVisible?

    在我的程序中我有两个JFrame实例 当我点击next按钮我想显示下一帧并隐藏当前帧 所以我用this setVisible false 和新的Next setVisible true 但在Next如果我点击窗口back按钮我想将上一帧设置
  • 使用 AJAX、PHP 和 jQuery 上传多个图像

    我在使用 AJAX 上传多个图像时遇到很多问题 我写这段代码 HTML
  • ASP.Net Core 应用程序可以在 Visual Studio 中运行,但不能与 dotnet run 一起运行

    我有一个 asp net core 应用程序 我开始通过 Visual Studio 构建它 通常当我按 F5 或按 Visual Studio 中的调试按钮时它工作正常 However if I try to use dotnet run
  • 将单元格超链接到其自身的宏

    我已经创建了一个宏 允许我双击超链接 它会根据我单击的单元格显示另一张工作表中的信息 现在我想自动化超链接过程 我需要一个宏 它将获取名称列表并将所有这些单元格超链接到自身 到目前为止 我有一个宏 它超链接激活的单元格 但返回值 0 但已超
  • 仅单击按钮即可添加记录

    我有一个 数据输入 属性设置为 是 的表单 它绑定到一个表 当我开始填写表格时 它会自动保存 我不希望这种情况发生 我只想在按下按钮时将表单保存到表格中 有什么简单的方法可以做到这一点吗 不含 VBA 如果我只能用 vba 做到这一点 请告
  • 去掉 UINavigationBar 右侧的空间

    所以 这就是我想要实现的目标 It s a UINavigationBar with a UIBarButtonItem使用自定义初始化UIButton 基本上是这样的 UIButton favoriteButton UIButton bu
  • 将新版本的 Android 应用程序发布到 google play admob 后,状态更改为非活动且不显示广告

    Admob 在我的应用程序上展示广告 一切正常 然后我创建了该应用程序的新版本 将其上传到 Google Play 广告就停止出现了 在 AdMob 中 该应用程序的状态更改为 非活动 AdMob 从未收到您网站的广告请求 气泡从绿色变为红
  • vba下载并保存在C:\user中[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想要使 用 VBA 的 excel 从互联网下载文件 该文件是一个包含有关员工列表信息
  • 将 Servlet 3.0 与 Weblogic 10.3 结合使用

    我正在研究基于表单的身份验证并使用以下语句 我已经意识到Servlet 3 0自带的HttpServletRequest gt login方法的实现方式 在stackoverflow用户的帮助下 HttpServletRequest req
  • 无法在 Android 2.3.x 或更低版本上使用 Movie 解码某些动画 GIF 文件

    我尝试使用以下代码片段来解码带有 Movie 类的动画 gif 文件 URL url InputStream is null BufferedInputStream bis null url new URL http emos plurk
  • 如何为Python 2.7重新安装GDAL库?

    我正在尝试安装适用于 Python 2 7 的 GDAL 库 并且我遵循了不同的可用说明 例如 http pythongisandstuff wordpress com 2011 07 07 installing gdal and ogr
  • 如何在没有端口映射的情况下将docker容器的ip和端口暴露给外部docker主机?

    当我在一台 docker 主机上为同一个 Web 映像启动两个 docker 容器时 两个docker容器监听同一个端口5000 port 5000两个容器的映射到docker主机的不同端口 49155 49156 要从外部 docker
  • Laravel 5.4 事件广播不适用于 vuejs

    我想用 laravel 5 4 vuejs 和带有 Echo 的 Pusher api 创建聊天 我做了两次与 Pusher 沟通 但我没有回调和我的 vue js 文件 如果有帮助的话 我在当地与 MAPM 合作 我已经安装了 compo