国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

websocket協(xié)議在onConnect時(shí)為什么不能發(fā)送數(shù)據(jù)

walkor

使用websocket協(xié)議,為什么無(wú)法在onConnect的時(shí)候發(fā)送數(shù)據(jù)?使用其它協(xié)議就可以。

8370 1 0
1個(gè)回答

walkor 打賞

websocket協(xié)議在tcp建立連接后有個(gè)握手的通訊過(guò)程,onConnect回調(diào)是在TCP建立連接后立刻被調(diào)用,如果在TCP建立連接后立刻在onConnect發(fā)送數(shù)據(jù)給客戶(hù)端,會(huì)擾亂websocket握手,導(dǎo)致websocket握手失敗。

workerman中在使用websocket協(xié)議時(shí),有個(gè)onWebSocketConnect回調(diào),這個(gè)回調(diào)是在websocket握手成功真正建立起websocket連接后的回調(diào),用法如下:

Worker項(xiàng)目:

$ws = new Worker('websocket://0.0.0.0:12345');
// 當(dāng)tcp建立連接時(shí)的回調(diào)
$ws->onConnect = function($connection)
{
    // 設(shè)置這個(gè)連接的onWebSocketConnect協(xié)議回調(diào)
    // 即websocket握手成功真正建立起websocket連接后的回調(diào)
    $connection->onWebSocketConnect = function($connection)
    {
        // 當(dāng)websocket連接建立起來(lái)后,向客戶(hù)端發(fā)送數(shù)據(jù)
        $connection->send("hello");
    };
};

GatewayWorker項(xiàng)目:
目前在GatewayWorker中不支持在Event.php設(shè)置onWebSocketConnect回調(diào),但可以在$gateway初始化時(shí)指定$gateway的onWebSocketConnect回調(diào),方法和上面一樣。

$gateway = new Worker('websocket://0.0.0.0:12345');
$gateway->onConnect = function($connection)
{
    $connection->onWebSocketConnect = function($connection)
    {
        $connection->send("hello");
    };
};

GatewayWorker項(xiàng)目注意:
$gateway初始化的onWebSocketConnect 回調(diào)運(yùn)行在Gateway進(jìn)程,在onWebSocketConnect 回調(diào)中無(wú)法使用Gateway::XXX相關(guān)的接口,可以使用$connection->send()發(fā)送數(shù)據(jù)。也無(wú)法直接使用$_SESSION
onWebSocketConnect 中:
目前可以通過(guò)$connection->globalClientId 獲得戶(hù)端的client_id
目前可以通過(guò)unserialize($connection->session)獲得當(dāng)前客戶(hù)端在Event::onXXX設(shè)置的$_SESSION;
目前也可以$connection->session = serialize($session_data); 設(shè)置客戶(hù)端的$_SESSION,設(shè)置的session數(shù)據(jù)在Event::onXXX中可以訪問(wèn)到

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??