## 官方文檔:
https://www.workerman.net/doc/gateway-worker/lib-gateway-functions.html
## Lib\Gateway類是Gateway/BusinessWorker模型中給客戶端發送數據的類。
提供了單發、群發以及關閉客戶端連接的接口
```
sendToClient(string $client_id, string $send_data);
向客戶端client_id發送$send_data數據
$client_id
客戶端連接的client_id
$send_data
要發送的數據(字符串類型),此數據會被Gateway所使用協議的encode方法打包后再發送給客戶端
closeClient(string $client_id);
斷開與client_id對應的客戶端的連接
$client_id
全局唯一標識客戶端連接的id
sendToAll(string $send_data [, array $client_id_array = null [, array $exclude_client_id = null [, bool $raw = false]]]);
向所有客戶端或者client_id_array指定的客戶端發送$send_data數據
$send_data
要發送的數據(字符串類型),此數據會被Gateway所使用協議的encode方法打包后發送給客戶端
$client_id_array
指定向哪些client_id發送,如果不傳遞該參數,則是向所有在線客戶端發送 $send_data 數據
$exclude_client_id
client_id組成的數組。$exclude_client_id數組中指定的client_id將被排除在外,不會收到本次發的消息
$raw
是否發送原始數據,一般用不到
getAllClientIdList(void);
獲取全局所有在線client_id列表。
getAllClientIdCount(void);
獲取當前在線連接總數(多少client_id在線)。
isOnline(string $client_id);
判斷$client_id是否還在線,是否在線取決于對應client_id是否觸發過onClose回調。
$client_id
客戶端的client_id
返回值
在線返回1,不在線返回0
bindUid(string $client_id, mixed $uid);
將client_id與uid綁定,uid泛指用戶id或者設備id,用來唯一確定一個客戶端用戶或者設備
$client_id
客戶端的client_id
$uid
uid,可以是數字或者字符串。
uid與client_id是一對多的關系,一個uid下有多個client_id,client_id下線(連接斷開)時會自動執行解綁
sendToUid(mixed $uid, string $message);
向uid綁定的所有在線client_id發送數據。
$uid
uid可以是字符串、數字、或者包含uid的數組。如果為數組,則是給數組內所有uid發送數據
$message
要發送的數據(字符串類型),此數據會被Gateway所使用協議的encode方法打包后再發送給客戶端
getClientIdByUid(mixed $uid);
返回一個數組,數組元素為與uid綁定的所有在線的client_id
getUidByClientId(string $client_id);
返回client_id綁定的uid,如果client_id沒有綁定uid,則返回null。
unbindUid(string $client_id, mixed $uid);
將client_id與uid解綁。當client_id下線(連接斷開)時會自動與uid解綁
$client_id
客戶端的client_id
$uid
數字或者字符串
isUidOnline(mixed $uid);
判斷$uid是否在線,如果某uid沒有通過進行任何綁定,那么對該uid調用將返回0
返回值
uid在線返回1,不在線返回0
getAllUidList(void);
獲取全局所有在線uid列表。
getAllUidCount(void);
獲取全局所有在線uid數量。
joinGroup(string $client_id, mixed $group);
將client_id加入某個組,以便通過Gateway::sendToGroup發送數據。
$client_id
客戶端的client_id
$group
只能是數字或者字符串
leaveGroup(string $client_id, mixed $group);
將client_id從某個組中刪除
$client_id
客戶端的client_id
$group
只能是數字或者字符串。
ungroup(mixed $group);
取消分組,或者說解散分組
sendToGroup(mixed $group, string $message [, array $exclude_client_id = null [, bool $raw = false]])
向某個分組的所有在線client_id發送數據。
$group
group可以是字符串、數字、或者數組。如果為數組,則是給數組內所有group發送數據
$message
要發送的數據(字符串類型),此數據會被Gateway所使用協議的encode方法打包后再發送給客戶端
$exclude_client_id
client_id組成的數組。$exclude_client_id數組中指定的client_id將被排除在外,不會收到本次發的消息
$raw
是否發送原始數據
getAllGroupIdList(void);
獲取全局所有在線group id列表。
getClientIdCountByGroup(mixed $group);
獲取某分組當前在線成連接數(多少client_id在線)。
getClientIdListByGroup(mixed $group);
獲取某個分組所有在線client_id列表。
getUidCountByGroup(mixed $group);
獲取某個分組下的在線uid數量。
getUidListByGroup(mixed $group);
獲取某個分組所有在線uid列表。
getClientSessionsByGroup(mixed $group);
獲取某個分組所有在線client_id信息。
getAllClientSessions(void);
獲取當前所有在線client_id信息。
setSession(string $client_id, array $session);
設置某個client_id對應的session
updateSession(string $client_id, array $session);
更新某個client_id對應的session
getSession(string $client_id);
獲取某個client_id對應的session。
```
- WebSocket協議
- 構造函數(6種協議)
- count(進程設置)
- name(鏈接名稱)
- $daemonize(守護進程設置)
- logFile(日志路徑)
- stdoutFile(守護進程記錄文件)
- connections(獲取鏈接數組的)
- worker的回調屬性
- worker類的方法
- Connection類的方法
- getRemotePort獲取端口方法
- getRemoteIp獲取IP地址
- close 安全關閉連接
- 定時器
- Channel分布式通信組件
- 心跳檢測程序
- liunx優化配置
- thinkphp5.1使用worerman
- thinkphp5.1中用Channel實現廣播通信
- thinkphp5.1中使用定時器
- thinkphp5.1使用TcpConnection類
- Gateway類使用
- BusinessWorker使用
- Register類的使用
- Events類使用(業務邏輯層)
- Lib\Gateway 接口(經常用)
- webman中間件stomp
- Gateway在thinkphp5.1里使用