ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
- 在上一章的文件接管之后,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即不触发事件监听.