- 在上一章的文件接管之后,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即不触发事件监听.