Gateway::sendToAll
說明:
void Gateway::sendToAll(string $send_data [, array $client_id_array = null [, array $exclude_client_id = null [, bool $raw = false]]]);
向所有客戶端或者client_id_array指定的客戶端發(fā)送$send_data
數(shù)據(jù)。如果指定的$client_id_array中的client_id不存在則自動丟棄
參數(shù)
$send_data
要發(fā)送的數(shù)據(jù)(字符串類型),此數(shù)據(jù)會被Gateway所使用協(xié)議的encode方法打包后發(fā)送給客戶端
$client_id_array
指定向哪些client_id發(fā)送,如果不傳遞該參數(shù),則是向所有在線客戶端發(fā)送 $send_data
數(shù)據(jù)
$exclude_client_id
client_id組成的數(shù)組。$exclude_client_id
數(shù)組中指定的client_id將被排除在外,不會收到本次發(fā)的消息
$raw
是否發(fā)送原始數(shù)據(jù),也就是繞過gateway協(xié)議打包過程,gateway對數(shù)據(jù)不再做任何處理,直接發(fā)給客戶端。
如果$raw
為true
,要求$message
為用協(xié)議打包好的數(shù)據(jù)(調(diào)用了gateway指定協(xié)議的encode方法生成的數(shù)據(jù)),否則客戶端可能無法解析。
此參數(shù)一般用于某些特殊情況,例如合并多個數(shù)據(jù)包為一段buffer,一次性發(fā)給客戶端,而不是逐條發(fā)給客戶端,這將有助于降低系統(tǒng)負(fù)載。
絕大多數(shù)情況此參數(shù)用不到,開發(fā)者可以忽略。
返回值
因?yàn)閿?shù)據(jù)發(fā)送是異步進(jìn)行的,所以沒有返回值。一般來說只要客戶端在線就可以發(fā)送成功。
更新日志
版本 | 說明 |
---|---|
2.0.7 | 增加了$exclude_client_id 和$raw 參數(shù) |
范例
use \GatewayWorker\Lib\Gateway;
class Events
{
...
public static function onMessage($client_id, $message)
{
// $message = '{"type":"say_to_all","content":"hello"}'
$req_data = json_decode($message, true);
// 如果是向所有客戶端發(fā)送消息
if($req_data['type'] == 'say_to_all')
{
Gateway::sendToAll($req_data['content']);
}
}
...
}