在onOpen函数中返回数组

时间:2019-07-12 08:57:39

标签: javascript laravel websocket ratchet

我当前正在编写聊天应用程序。到目前为止,用户可以互相发送消息,并且我能够将消息存储在数据库中。现在,当用户打开页面向其他用户发送消息时,我想在onOpen函数中显示存储在数据库中的消息。

这是我的onOpen函数的样子:

public function onOpen(ConnectionInterface $conn)
    {

        $query =  $conn->httpRequest->getUri()->getQuery();

        preg_match_all('!\d+!', $query, $matches);

        $my_id = $matches[0][0];

        $friend_id = $matches[0][1];

        $conn->resourceId = $my_id;

        $this->users[$conn->resourceId] = $conn;

        $messages = Private_message::where([

            ['user1',$my_id],
            ['user2',$friend_id]

        ])->orWhere([

            ['user1',$friend_id],
            ['user2',$my_id]

        ])->get()->toArray();

    }

我想将$messages数组返回到我的privateChat.blade.php视图,以便可以将它们打印出来。

我尝试在我的return view('privateChat',['messages' => $messages]);中进行@dd($messages)privateChat.blade.php的操作,但是该变量未定义。 我还尝试了return $messages并在我的onopen js函数中将它们打印出来,但是它不起作用。正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

如您所见,您没有返回任何内容

如此

public function onOpen(ConnectionInterface $conn)
{

    $query =  $conn->httpRequest->getUri()->getQuery();

    preg_match_all('!\d+!', $query, $matches);

    $my_id = $matches[0][0];

    $friend_id = $matches[0][1];

    $conn->resourceId = $my_id;

    $this->users[$conn->resourceId] = $conn;

    $messages = Private_message::where([

        ['user1',$my_id],
        ['user2',$friend_id]

    ])->orWhere([

        ['user1',$friend_id],
        ['user2',$my_id]

    ])->get()->toArray();

   $viewShareVariables = compact('messages');

   return view('privateChat',$viewShareVariables);

}

如果有任何问题,请在下面评论