foreach中的onMessage怎么對(duì)應(yīng)?
<?php
use \Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
use \Workerman\Lib\Timer;
require_once 'Autoloader.php';
$worker = new Worker();
// 進(jìn)程啟動(dòng)時(shí)
$worker->onWorkerStart = function()
{
$members = $db->query("SELECT xxxxxxx");
foreach ($members as $key => $value) {
$ws_connection = new AsyncTcpConnection("ws://xxxxx.com/ws/".$value['listenKey']);
// 設(shè)置以ssl加密方式訪問,使之成為wss
$ws_connection->transport = 'ssl';
// 連接成功
$ws_connection->onConnect = function($connection){
};
// 遠(yuǎn)程websocket服務(wù)器發(fā)來消息時(shí)
$ws_connection->onMessage = function($connection, $data){
};
// 連接上發(fā)生錯(cuò)誤時(shí),一般是連接遠(yuǎn)程websocket服務(wù)器失敗錯(cuò)誤
$ws_connection->onError = function($connection, $code, $msg){
echo "error: $msg\n";
};
// 當(dāng)連接遠(yuǎn)程websocket服務(wù)器的連接斷開時(shí)
$ws_connection->onClose = function($connection){
echo "connection closed\n";
};
// 設(shè)置好以上各種回調(diào)后,執(zhí)行連接操作
$ws_connection->connect();
}
};
?>
我是菜鳥,剛接觸workerman。
在foreach中循環(huán)出每個(gè)member,然后用AsyncTcpConnection來請(qǐng)求ws。
現(xiàn)在遇到的問題是:onMessage是異步回調(diào)的,在onMessage內(nèi)無法獲取到外部的$value。這樣我就無法知道它返回的$data是對(duì)應(yīng)哪個(gè)member的ws。有什么辦法能讓他們對(duì)應(yīng)上嗎?
1個(gè)回答
年代過于久遠(yuǎn),無法發(fā)表回答