42 lines
1001 B
PHP
42 lines
1001 B
PHP
|
<?php
|
||
|
namespace App\Support;
|
||
|
|
||
|
class SocketIOParser extends Packet
|
||
|
{
|
||
|
/**
|
||
|
* Encode output payload for websocket push.
|
||
|
*
|
||
|
* @param string $event
|
||
|
* @param mixed $data
|
||
|
*
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public static function encode(string $event, $data)
|
||
|
{
|
||
|
$packet = Packet::MESSAGE . Packet::EVENT;
|
||
|
$shouldEncode = is_array($data) || is_object($data);
|
||
|
$data = $shouldEncode ? json_encode($data) : $data;
|
||
|
$format = $shouldEncode ? '["%s",%s]' : '["%s","%s"]';
|
||
|
|
||
|
return $packet . sprintf($format, $event, $data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Decode message from websocket client.
|
||
|
* Define and return payload here.
|
||
|
*
|
||
|
* @param \Swoole\Websocket\Frame $frame
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function decode($frame)
|
||
|
{
|
||
|
$payload = Packet::getPayload($frame->data);
|
||
|
|
||
|
return [
|
||
|
'event' => $payload['event'] ?? null,
|
||
|
'data' => $payload['data'] ?? null,
|
||
|
];
|
||
|
}
|
||
|
}
|