用作ws客户端时,发起连接的时候能不能带cookie

haocker

问题描述

没看到问你带cookie和其他请求头连接的文章,因为服务器需要带cookie和一些特定请求头才能握手成功

854 3 0
3个回答

nitron

WebSocket协议本身不支持设置Cookie但是可以通过在建立连接之前发送HTTP请求来设置Cookie。

  • haocker 2023-05-31

    能不能带其他请求头和cookie

喵了个咪

看源码应该是这样

$con = new AsyncTcpConnection('ws://echo.websocket.org:80');
$con->headers = [
    'Cookie' => 'key1=value1; key2=value2'
];
$con->onConnect = function(AsyncTcpConnection $con) {
    $con->send('hello');
};
$con->onMessage = function(AsyncTcpConnection $con, $data) {
   echo $data;
};
$con->connect();
小W

截图

截图

ws握手使用的是http协议,握手时会将用户自定义的信息添加到头信息中,所以在ws客户端链接设置headers属性就可以了

🔝