workrman作为客户端 连接提示 Sec-WebSocket-Accept not found

lurrui
function  uuid()
    {
        $chars = md5(uniqid(mt_rand(), true));
        $uuid = substr ( $chars, 0, 8 ) . '-'
            . substr ( $chars, 8, 4 ) . '-'
            . substr ( $chars, 12, 4 ) . '-'
            . substr ( $chars, 16, 4 ) . '-'
            . substr ( $chars, 20, 12 );
        return $uuid ;
    }

$worker->onWorkerStart = function($worker){

                $con = new AsyncTcpConnection('ws://vop.baidu.com/realtime_asr'.'?sn='.uuid());

大家看可以连接这个地址试一下。 我怎么实验都不行。 baidu接口

3131 5 0
5个回答

喵了个咪

说明这个地址不支持websocket协议。

  • lurrui 2020-07-20

    眼中程序这个工作 的门槛就这么低么。我即使不会编程 ,链接能不能连 都不知道,就来论坛问问题?。。

喵了个咪

眼中程序这个工作 的门槛就这么低么。我即使不会编程 ,链接能不能连 都不知道,就来论坛问问题?。。

我通过浏览器测试你的代码也是连不上你发的地址,报错
截图
这个报错说明返回的http头中缺少Sec-WebSocket-Protocol这个字段。说明这个地址不支持websocket,或者更严谨的说法,这个地址不支持标准的websocket。

因为你的最后2个截图是后发的,开始你没有说明这个地址官方说明文档,只给了个测试地址及参数让大家帮测试。所以我根据报错和仅有的地址信息给出了一个简单的结论 “这个地址不支持websocket”。如果我之前的结论造成了你的不满甚至愤怒,我表示抱歉,这并非我本意。不过这个地址确实不支持标准的websocket,连基本的浏览器都连接失败。

  • lurrui 2020-07-22

    我用php 其他库 比如 swoole 的websocket ,和 一些 github websocket 类库 都能连接。 用python的 标准类库 也能连接, 因为 我和 workerman gateway 也打交道 很多年了,也非常感谢 开源的大佬们, 不过这的确也存在一些 兼容性问题。无论如何 还是希望能改进吧。

  • 喵了个咪 2020-07-23

    我这里用workerman测试没有问题。应该是你哪里用错了。

    $con = new AsyncTcpConnection('ws://vop.baidu.com/realtime_asr'.'?sn='.uuid());
    $con->onWebSocketConnect= function($connection){
        echo "onWebSocketConnect\n";
        $connection->send('[]');
    };
    $con->onMessage= function($connection, $data){
        var_dump($data);
    };
    $con->onClose= function($connection){};
    $con->onError= function($connection, $code, $msg){};
    $con->connect();

    输出 onWebSocketConnect

blogdaren

我测试题示地址完全是OK的,另外Workerman version:3.5.23 、PHP version:7.2.8
大版本和你的基本没出入,所以不应该有这种问题, 参考下看吧;
附连接成功的抓包图:

  • lurrui 2020-07-22

    请教一下, 如何设置才能连接上 呢。 能否给各测试的 代码

  • blogdaren 2020-07-22

    没有什么需要特别设置的,直接在onWorkerStart写:
    $con = new AsyncTcpConnection('ws://vop.baidu.com/realtime_asr'.'?sn='.uuid());
    $con->onConnect= function($connection){
    };
    $con->onClose= function($connection){
    };
    $con->onError= function($connection, $code, $msg){
    };
    $con->connect();

  • lurrui 2020-07-22

    哦,哪一样的。 不过能否截一个 正常 命令行 运行后的 黑窗口图。 因为我发的那个运行图, 的确提示 wec-WebSocket-Accept not found

  • blogdaren 2020-07-22

    @4524:贴图上下面查看。

  • 大神盘古哥 2020-07-27

    @614:大哥看到信息尽快回我微信

blogdaren

截图DEMO:

  • 暂无评论
lurrui

截图DEMO:

我试了一下, 一旦开始发送开始帧 就会提示我那个错误。 用其他库 我试了下 貌似没事。
截图

截图

  • blogdaren 2020-07-22

    $connecton->send() 第二个参数为啥是true,不能为true, 干掉。

年代过于久远,无法发表回答
🔝