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

網(wǎng)頁中建立ws連接時,如果傳入了子協(xié)議就會提示連接失敗,去掉子協(xié)議就可以連接成功

gcollar

我想在與GatewayWorker建立連接前對請求連接的來源進(jìn)行驗(yàn)證,因此在頁面中請求連接時傳入了token,請求代碼如下:

let token = 'abc';
ws = new WebSocket('ws://192.168.0.199:8120', [token]);

服務(wù)器端可以通過Sec-WebSocket-Protocol讀取到token值,但驗(yàn)證通過后客戶端還是提示連接失敗,也沒有具體的失敗原因信息

截圖

在網(wǎng)上查了查,似乎是服務(wù)器端需要將Sec-WebSocket-Protocol中的內(nèi)容回寫到Response的Header中,我初次使用GatewayWorker,不知道要如何將子協(xié)議寫入到Response中, 在GatewayWorker官方文檔中沒有找到相關(guān)的信息,哪位朋友知道這個問題要如何處理呢?

2870 3 0
3個回答

小七他哥
  • gcollar 2021-07-14

    謝謝,query傳遞token的方式我已經(jīng)調(diào)試通過了,只是token的字符串比較長,我想用子協(xié)議的形式再試試看,也想把子協(xié)議這一塊了解的清楚一些。

gcollar

Query傳遞token的方式已經(jīng)調(diào)試通過了,我想再用子協(xié)議的方式試試看,還請知道的朋友指點(diǎn)一下,謝謝

  • 暫無評論
phpcreeper
$connection->onWebSocketConnect = function($connection , $http_header){
    if (!empty($_SERVER['HTTP_SEC_WEBSOCKET_PROTOCOL'])) {
        //注意 sub_protocols 根據(jù)前端傳的是字符串還是數(shù)組自行處理下
        $sub_protocols = $_SERVER['HTTP_SEC_WEBSOCKET_PROTOCOL'];
        $connection->headers = [
            'Sec-WebSocket-Protocol: ' . $sub_protocols,
        ];
    }
};
  • gcollar 2021-07-15

    調(diào)試通過了,多謝!

  • 雪飲 2022-04-23

    我在GatewayWorker中嘗試這樣設(shè)置(在BusinessWorker中的onGatewayMessage回調(diào)中實(shí)現(xiàn)):
    if(isset($data["body"])){
    if(isset($data["body"]["server"])){
    if(isset($data["body"]["server"]["HTTP_SEC_WEBSOCKET_PROTOCOL"])){
    //var_dump($data["body"]["server"]["HTTP_SEC_WEBSOCKET_PROTOCOL"]);

                    $sub_protocols = $data["body"]["server"]["HTTP_SEC_WEBSOCKET_PROTOCOL"];
                    $connection->headers = [
                        'Sec-WebSocket-Protocol: '.$sub_protocols,
                    ];
    
                }
            }
        }

    這樣做,但是還是沒有生效

年代過于久遠(yuǎn),無法發(fā)表回答
??