在workerman中我们可以看到常用的socket事件onConnect,onMessage,onClose,实际上socket不存在这些事件,workerman只是为了方便开发者。自己也在写相关的东西,正好记录下。
(1).当socket可读,通过stream_socket_accept 或者socket_accept成功接受套接字上的连接那么此时应该触发onConnect回调
(2).当socket可读,通过fread获取到客户端数据,当然如果包含具体协议,应该按照协议拿到完整的客户端数据,此时再触发onMessage回调
(3).onClose事件以下几种情况都要考虑:
(3.1).当客户端socket可读,但是读取到的内容为空,通过is_resource或者feof来判断客户端socket是否已经关闭 (3.2).当客户端socket可写,但是写入失败的时候,需要调用onClose回调