向客戶端發(fā)送數(shù)據(jù),函數(shù)原型:
bool?Server->send(mixed?$fd,?string?$data,?int?$serverSocket?=?-1);
發(fā)送過程是異步的,底層會(huì)自動(dòng)監(jiān)聽可寫,將數(shù)據(jù)逐步發(fā)送給客戶端
參數(shù)
$fd,客戶端的文件描述符
$data,發(fā)送的數(shù)據(jù),TCP協(xié)議最大不得超過2M,可修改 buffer_output_size 改變?cè)试S發(fā)送的最大包長(zhǎng)度
$serverSocket,向unix Socket DGRAM對(duì)端發(fā)送數(shù)據(jù)時(shí)需要此項(xiàng)參數(shù),TCP客戶端不需要填寫
返回值
發(fā)送成功會(huì)返回true
發(fā)送失敗會(huì)返回false,調(diào)用$server->getLastError()方法可以得到失敗的錯(cuò)誤碼
Server->getLastError
獲取最近一次操作錯(cuò)誤的錯(cuò)誤碼。業(yè)務(wù)代碼中可以根據(jù)錯(cuò)誤碼類型執(zhí)行不同的邏輯。
function?Server->getLastError()
返回一個(gè)整型數(shù)字錯(cuò)誤碼
發(fā)送失敗錯(cuò)誤
1001 連接已經(jīng)被Server端關(guān)閉了,出現(xiàn)這個(gè)錯(cuò)誤一般是代碼中已經(jīng)執(zhí)行了$serv->close()關(guān)閉了某個(gè)連接,但仍然調(diào)用$serv->send()向這個(gè)連接發(fā)送數(shù)據(jù)
1002 連接已被Client端關(guān)閉了,Socket已關(guān)閉無法發(fā)送數(shù)據(jù)到對(duì)端
1003 正在執(zhí)行close,onClose回調(diào)函數(shù)中不得使用$serv->send()
1004 連接已關(guān)閉
1005 連接不存在,傳入$fd 可能是錯(cuò)誤的
1007 接收到了超時(shí)的數(shù)據(jù),TCP關(guān)閉連接后,可能會(huì)有部分?jǐn)?shù)據(jù)殘留在管道緩存區(qū)內(nèi),這部分?jǐn)?shù)據(jù)會(huì)被丟棄
1008 發(fā)送緩存區(qū)已滿無法執(zhí)行send操作,出現(xiàn)這個(gè)錯(cuò)誤表示這個(gè)連接的對(duì)端無法及時(shí)收數(shù)據(jù)導(dǎo)致發(fā)送緩存區(qū)已塞滿
1202 發(fā)送的數(shù)據(jù)超過了 server->buffer_output_size 設(shè)置
推薦學(xué)習(xí):?swoole視頻教程