[TOC]
* * * * *
## 1 源代碼
### (onWorkerStart)worker啟動回調
~~~
public $onWorkerStart = null;
worker::run()
if ($this->onWorkerStart) {
try {
call_user_func($this->onWorkerStart, $this);
} catch (\Exception $e) {
echo $e;
exit(250);
}
}
~~~
### (onWorkerReload)worker重載回調
~~~
public $onWorkerReload = null;
worker::reload()
if ($worker->onWorkerReload) {
try {
call_user_func($worker->onWorkerReload, $worker);
} catch (\Exception $e) {
echo $e;
exit(250);
}
}
if ($worker->reloadable) {
self::stopAll();
}
~~~
### (onWorkerStop)worker停止回調函數
~~~
public $onWorkerStop = null;
worker::stop()
if ($this->onWorkerStop) {
try {
call_user_func($this->onWorkerStop, $this);
} catch (\Exception $e) {
echo $e;
exit(250);
}
}
~~~
### (onConnect)客戶端連接時回調函數
~~~
public $onConnect = null;
worker::acceptConnection()
if ($this->onConnect) {
try {
call_user_func($this->onConnect, $connection);
} catch (\Exception $e) {
echo $e;
exit(250);
}
}
~~~
### (onMessage)接受到客戶端數據時回調函數
~~~
public $onMessage = null;
worker::__construct()
{
......
$this->onMessage = function () {
};
}
~~~
~~~
worker::acceptConnection()
{
......
$connection->onMessage = $this->onMessage;
......
}
~~~
~~~
worker::acceptUdpConnection()
{
......
if ($this->onMessage) {
if ($this->protocol) {
$parser = $this->protocol;
$recv_buffer = $parser::decode($recv_buffer, $connection);
}
ConnectionInterface::$statistics['total_request']++;
try {
call_user_func($this->onMessage, $connection, $recv_buffer);
} catch (\Exception $e) {
echo $e;
exit(250);
}
}
.....
}
~~~
### (onClose)客戶端連接斷開時回調
~~~
public $onClose = null;
worker::acceptConnection()
$connection->onClose = $this->onClose;
~~~
### (onBufferFull )發送緩沖區數據達到上限回調函數
~~~
public $onBufferFull = null;
worker::acceptConnection()
$connection->onBufferFull = $this->onBufferFull;
~~~
### (onBufferDrain )發送緩沖區數據發送完畢回調函數
~~~
public $onBufferDrain = null;
worker::acceptConnection()
$connection->onBufferDrain = $this->onBufferDrain;
~~~
### (onError ) 客戶端連接發送錯誤時回調
~~~
public $onError = null;
worker::acceptConnection()
$connection->onError = $this->onError;
~~~
## 2 文件分析
### 1 worker相關
onWokerStart: worker啟動回調
onWorkerReload: worker重載回調
onWokrerStop: worker停止回調
### 2 connect相關
onConnet: 客戶端連接建立時回調
onMessage: 服務器接受到數據時回調
onClose: 客戶端連接關閉時回調
onBufferFull: 數據緩沖區達到上限時回調
onBufferDrain: 數據緩沖區發送完畢時回調
onError: 客戶端連接錯誤時回調
## 3 總結
事件接口注冊相關函數。
Worker接口 3個
Connect接口 4個