- 在上一章的文件接管之后,client/server通訊使用的格式為json.
- 格式內容分別為event與data,event為事件行為,data為內容.內部傳遞必須使用`event`與`data`關鍵字.詳見``vendor\topthink\think-swoole\src\concerns\InteractsWithWebsocket.php`` ``public function onMessage``
~~~
$payload = $parser->decode($frame);
['event' => $name, 'data' => $data] = $payload;
~~~
這里的decode調用的就是Parser.php中的`decode`方法.因此,若想自定義格式只需要對該方法進行處理即可,例如:
~~~
public function decode($frame)
{
$payload = Packet::getPayload($frame->data);
return [
'event' => $payload['cmd'] ?? null,
'data' => $payload['ctx'] ?? null,
];
}
~~~
- 關于Handler.php中所有方法都返回了false是讓所有的消息都用事件監聽去處理.若有特殊消息處理,也可以在方法內處理,返回true即不觸發事件監聽.