首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Curl websockets

Curl websockets
EN

Stack Overflow用户
提问于 2022-01-09 21:21:24
回答 1查看 499关注 0票数 0

我正在写一个bash脚本。我需要从我的esp32上的websocket获取数据。我需要从传感器中得到价值。问题是,有时当我发送请求时,我无法正确地连接。

代码语言:javascript
复制
flow_value_raw=$(timeout 1s \
        curl \
        --no-buffer \
        --header "Connection: Upgrade" \
        --header "Upgrade: websocket" \
        --header "Host: $ip$port/$flow" \
        --header "Origin: http://$ip$port/$flow" \
        --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
        --header "Sec-WebSocket-Version: 13" \
        http://$ip:$port/$flow 2>/dev/null) 
        flow_value_raw=${flow_value_raw:2}

以这种方式,我每秒钟都会触发卷发,但很多时候我从卷发中什么也得不到。有什么办法可以告诉curl从回复中得到一个值吗?如果我只使用没有超时的卷曲,就会得到多个响应。

EN

回答 1

Stack Overflow用户

发布于 2022-01-09 21:25:35

我不太清楚你的意思或追求。

所以我试着回应

我能告诉curl从响应中只得到一个值

条件为while-loop的true将无限期地继续。无限循环

来自curl的输出保存在flow_value_raw

if [ -n "${flow_value_raw} ]检查字符串变量非空(如果是非空的,即由curl输出的值,break离开无限循环)是否为1第二和重复输出的break变量。

代码语言:javascript
复制
while true; do
    local flow_value_raw=$(timeout 1 curl ...args)
    if [ -n "${flow_value_raw}" ]; then
      break
    else
      sleep 1
    fi
done

来自man timeout的PS

启动命令,如果持续时间后仍在运行,则终止它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70645621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档