foreach中的onMessage怎么對應(yīng)?
<?php
use \Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
use \Workerman\Lib\Timer;
require_once 'Autoloader.php';
$worker = new Worker();
// 進程啟動時
$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){
};
// 遠程websocket服務(wù)器發(fā)來消息時
$ws_connection->onMessage = function($connection, $data){
};
// 連接上發(fā)生錯誤時,一般是連接遠程websocket服務(wù)器失敗錯誤
$ws_connection->onError = function($connection, $code, $msg){
echo "error: $msg\n";
};
// 當連接遠程websocket服務(wù)器的連接斷開時
$ws_connection->onClose = function($connection){
echo "connection closed\n";
};
// 設(shè)置好以上各種回調(diào)后,執(zhí)行連接操作
$ws_connection->connect();
}
};
?>
我是菜鳥,剛接觸workerman。
在foreach中循環(huán)出每個member,然后用AsyncTcpConnection來請求ws。
現(xiàn)在遇到的問題是:onMessage是異步回調(diào)的,在onMessage內(nèi)無法獲取到外部的$value。這樣我就無法知道它返回的$data是對應(yīng)哪個member的ws。有什么辦法能讓他們對應(yīng)上嗎?
1個回答
年代過于久遠,無法發(fā)表回答