为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在 laravel echo 中向通道发送数据?

是否可以在 laravel echo 中向通道发送数据?

PHP
守候你守候我 2023-09-22 16:39:30
我有两个单独的 laravel 项目,并安装在其中一个项目laravel-echo和另一个项目上laravel-echo-server。我将这个项目连接在一起并将数据从服务器传输到客户端,但我无法将数据从客户端发送到服务器。服务器中的事件:class TestEvent implements ShouldBroadcast{    use Dispatchable, InteractsWithSockets, SerializesModels;    public $prices;    /**     * Create a new event instance.     *     * @param int[] $prices     */    public function __construct($prices = ['a' => 11000, 'b' => 420])    {        $this->prices = $prices;    }    /**     * Get the channels the event should broadcast on.     *     * @return \Illuminate\Broadcasting\Channel|array     */    public function broadcastOn()    {        return new PresenceChannel('bla-bla');    }    public function broadcastAs()    {        return 'financial.prices';    }}服务器中的路线:Route::get('/fire', function () {    $prices = [        'a' => rand(11000, 120000),        'b' => rand(450, 5000)    ];    event(new \App\Events\TestEvent($prices));    return 'done';});客户:import Echo from 'laravel-echo';window.io = require('socket.io-client');window.Echo = new Echo({    broadcaster: 'socket.io',    host: window.location.hostname + ':6001',    logToConsole: true});window.Echo.logToConsole = true;window.Echo.join('bla-bla')    .here((data) => {        console.log('asdasd');    })    .joining((data) => {        console.log('asdasd');    })    .leaving((data) => {        console.log('asdasd');    });我怎样才能做到这一点?如果有人能给我建议,我将不胜感激!😊
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

连接到套接字服务器后需要使用emit:


window.io = require('socket.io-client');

const socket = io('https://localhost:8080');


socket.on('connect', () => {

    socket.emit('your_channel_to_emit', {your_data});

});


查看完整回答
反对 回复 2023-09-22
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

将其添加到您的事件 (App\EventName):


public function broadcastWith()

{

    return [

        'data' => "your data",

        'moredata' => "more data",

    ];

}

并在 JS 中像这样访问您的数据:


Echo.channel('channel-name')

    .listen('EventName', (event) => {

        console.log(event.data);

        console.log(event.moredata);

        console.log(event['moredata']);

    }


查看完整回答
反对 回复 2023-09-22
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

默认情况下,Echo 将使用/broadcasting/auth端点来授权通道访问。如果您的客户端不在同一主机上,您将必须自定义推送器的 authEndpoint。authEndpoint您可以通过将配置选项传递给您的 Echo 实例来指定您自己的授权端点:


window.Echo = new Echo({

    broadcaster: 'pusher',

    key: 'your-pusher-channels-key',

    authEndpoint: '/custom/endpoint/auth', //customize here.

});


查看完整回答
反对 回复 2023-09-22
  • 3 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信