workerman建立了2個(gè)監(jiān)聽(tīng),一個(gè)http啟用ssl,一個(gè)udp。
現(xiàn)在有這么一個(gè)需求,在不改動(dòng)現(xiàn)有前段的情況下,前端訪問(wèn)https地址請(qǐng)求相關(guān)數(shù)據(jù),后臺(tái)程序收到用戶的https的請(qǐng)求,通過(guò)服務(wù)器去發(fā)送udp新給另外一個(gè)設(shè)備請(qǐng)求信息,處理后再返回結(jié)果給https的請(qǐng)求。
如何才能做到這種流程。
另外后臺(tái)可能和另外一個(gè)設(shè)備UDP通訊來(lái)回2次,如何讓他線性完成整個(gè)流程,在我理解里,好像每次接收UDP數(shù)據(jù)都是另外一個(gè)線程在執(zhí)行,不能和TCP一樣長(zhǎng)鏈等待。
如果用戶多,請(qǐng)求多,不區(qū)分的話數(shù)據(jù)很亂,不知道那個(gè)數(shù)據(jù)歸屬哪個(gè)用戶。
感謝!
[attach]681[/attach]
@walkor 昨天忘記傳圖了,我先實(shí)驗(yàn)?zāi)貜?fù)的方法。。
如果多個(gè)用戶一起發(fā)起https請(qǐng)求的時(shí)候,服務(wù)器2回復(fù)的數(shù)據(jù)就不知道是誰(shuí)的了。服務(wù)器2操作不了。
$opts = array(
'socket' => array(
'bindto' => '本機(jī)ip:5000',
),
);
$context = stream_context_create($opts);
$socket = stream_socket_client('udp://x.x.x.x:xx', $errno, $errmsg, 0, $context);
stream_socket_sendto($socket, $msg);
$result = stream_socket_recvfrom($socket, 65535);
fclose($cocket);
作為udp客戶端可以不用監(jiān)聽(tīng)5000端口。如果服務(wù)端固定向5000端口返回?cái)?shù)據(jù),udp客戶端綁定socket本機(jī)端口為5000就行。