use \Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
require_once './Workerman/Autoloader.php';
define('PING_TIMEOUT', 5);
$task = new Worker();
// 進(jìn)程啟動(dòng)時(shí)異步建立一個(gè)到www.baidu.com連接對(duì)象,并發(fā)送數(shù)據(jù)獲取數(shù)據(jù)
$task->onWorkerStart = function($task)
{
$connection_to_baidu = new AsyncTcpConnection('ws://127.0.0.1:8080');
$connection_to_baidu->onWorkerStart = function($connection_to_baidu) {
echo "3333";
};
// 當(dāng)連接建立成功時(shí),發(fā)送http請(qǐng)求數(shù)據(jù)
$connection_to_baidu->onConnect = function($connection_to_baidu)
{
$connection_to_baidu->lastTime = time();
$connection_to_baidu->send("lcjn");//隨便發(fā)點(diǎn)什么吧(觸發(fā))
echo "connect success\n";
};
$connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
{
$connection_to_baidu->lastTime = time();
echo $http_buffer;
};
$connection_to_baidu->onClose = function($connection_to_baidu)
{
echo "connection closed\n";
};
$connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
{
echo "Error code:$code msg:$msg\n";
};
$connection_to_baidu->connect();
};
// 運(yùn)行worker
Worker::runAll();
比如現(xiàn)在沒(méi)開(kāi)8080端口
1 AsyncTcpConnection 連不上ws,應(yīng)該在onError里面有響應(yīng)事件啊,為什么什么都沒(méi)收到
2 如果端口因?yàn)槟承﹩?wèn)題導(dǎo)致接收不到數(shù)據(jù),應(yīng)該怎么重新鏈接這個(gè)ws
1、tcp連接已經(jīng)連上了,只是你發(fā)數(shù)據(jù)不符合websocket協(xié)議的數(shù)據(jù)格式,服務(wù)端無(wú)法識(shí)別。onError在tcp連接失敗時(shí)會(huì)觸發(fā),而你的情況不符合觸發(fā)條件。
注意:服務(wù)端用什么協(xié)議,客戶端就得按照對(duì)應(yīng)的協(xié)議格式去發(fā)送數(shù)據(jù),不然二者無(wú)法通訊。就像你和老外講中文,老外聽(tīng)不懂,老外只能接收英文一樣道理
如果你裸tcp傳輸,服務(wù)端請(qǐng)使用tcp,不要用websocket?;蛘吣阌脀s協(xié)議去連websocket服務(wù),new AsyncTcpConnection('ws://xxxxx:xx');這樣
2、客戶端重新new WebSocket去重連
1 服務(wù)端是websocket ,當(dāng)服務(wù)端沒(méi)有啟動(dòng),8080端口不通,啟動(dòng)這個(gè)程序(AsyncTcpConnection),這時(shí)候根本連不上ws吧,這時(shí)候會(huì)觸發(fā)哪個(gè)事件onError
Press Ctrl-C to quit. Start success.
啟動(dòng)之后一直是這個(gè)狀態(tài) 什么也沒(méi)輸出啊,好像沒(méi)走onError
已經(jīng)修復(fù),請(qǐng)更新windows版本workerman。
linux版本沒(méi)問(wèn)題,不受影響。
3.3.5 - 3.3.9版本不小心把這個(gè)問(wèn)題還原了,重新下載一份就好了,現(xiàn)在已經(jīng)修復(fù),修復(fù)后的版本名3.3.90