0

queue.blade.php

   Echo.channel('everyone')
            .listen('Queue_number', function (e) {
                 console.log('e='+e);
                 console.log('e keys='+Object.keys(e));
                 console.log('socket='+e.socket);
                 console.log('city='+e.city);
                 console.log('p_id='+e.p_id);
                 console.log('message='+e.message);
                 console.log('s_number='+e.s_number);

应用程序/事件/Queue_number.php

class Queue_number  implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public $message;
    public $s_number;
    public $city;
    public $p_id;
    public function __construct($message,$s_number,$city,$p_id)
    {
        $this->message = $message;
        //$this->s_number = $s_number;
        $this->s_number = '1234';
        $this->city = '236';
        $this->p_id = $p_id;

    }

    public function broadcastOn()
    {
        return new Channel('everyone');
    }

控制器

   public function queue_add(Request $request)
    {
        $message = $request->validate(['message'=>'required']);
        $s_number=$request->name;
        $city=$request->city;
        $p_id=$request->p_id;

        broadcast(new Queue_number($message['message'],$s_number,$city,$p_id));
//->toOthers()

return response()->json(['status'=>'success','message'=>$message['message'],'s_number'=>$s_number,'city'=>$city,'p_id'=>$p_id]);
    }

我收到了来自 Events Queue_number.php 的控制台

       e=[object Object]
63:615 e keys=message,s_number,socket
63:616 socket=null
63:617 city=undefined
63:618 p_id=undefined
63:619 message=1
63:620 s_number=1234

我不知道为什么消息和 s_number 是正确的,但其他像 city 和 p_id 是空的,未定义的?

对象键是 message,s_number,socket

为什么显示'socket'这个关键词?

如何解决问题以获取这两个变量 $city 和 $p_id?

感谢任何帮助。

4

1 回答 1

0

每当更改代码时,我都会找到愚蠢的答案您必须重新启动 1.laravel-echo-server start 2.php artisan queue:work

一切都很好~

于 2018-10-03T01:33:08.143 回答