public function onMessage(swoole_websocket_server $server, $frame)
{
if (!isset($this->unfinished[$frame->fd])) {
return false;
}
if (isset($this->connections[$frame->fd]['request']->laravooleInfo->nextMessageRoute)) {
$request = $this->connections[$frame->fd]['request'];
$route = $request->laravooleInfo->nextMessageRoute;
$data['method'] = $route['method'];
$data['params'] = $route['params'];
$data['params']['_laravoole_raw'] = $frame->data;
$data['params']['_laravoole_previous'] = $route['previous'];
$data['echo'] = $request->echo;
if ($frame->finish) {
unset($request->laravooleInfo->nextMessageRoute);
}
return $this->dispatch($server, $frame->fd, $data);
} else {
$this->unfinished[$frame->fd] .= $frame->data;
}
if (!$frame->finish) {
return;
}
$data = $this->connections[$frame->fd]['protocol']::decode($this->unfinished[$frame->fd]);
if (is_null($data)) {
return;
}
$this->unfinished[$frame->fd] = '';
return $this->dispatch($server, $frame->fd, $data);
}