gpt4 book ai didi

c - WebSocket 握手请求后服务器给出 http 400 错误

转载 作者:行者123 更新时间:2023-11-30 15:19:47 26 4
gpt4 key购买 nike

我正在尝试用 C 语言实现一个开源 CometD 库,以便能够在几乎任何给定设备上运行 CometD 客户端。

与服务器握手和通信的 Long_Polling 技术已经完成,因此从逻辑上讲,我必须向用户提供 WebSocket 选项。

所以我获取了 Inter Web 并遇到了 NoPoll库来帮助我解决 WebSocket 部分。

感谢NoPoll现在我可以到达服务器并敲他的门,但是当我尝试与它握手时,我总是收到此 400 错误:

这是我的握手:

GET ws://m.zpush.ovh:8080/str/strd HTTP/1.1
Host: m.zpush.ovh:8080
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Extension: permessage-deflate;client_max_window_bits
Sec-WebSocket-Key: Z0WLawAAAADGI3syAAAAAA==
Origin: null
Cookie: BAYEUX_BROWSER=56a9-mchhnynonz6ji8a6hs1sh49; JSESSIONID=8gz8e00htqrl15vcm3o9yi95f
Sec-WebSocket-Version: 13

这是 Jetty 错误:

WARN:oejh.HttpParser:qtp1213415012-14: badMessage: 400 for HttpChannelOverHttp@40ec53c2{r=0,c=false,a=IDLE,uri=-}

所以我再次获取了网络,但我没有找到任何关于它的线索。从我读到的 jetty 通常会给出更精确的错误消息,但你会同意这个消息非常模糊。

它没有告诉我为什么以及我应该修复什么来实现握手。但我怀疑我在握手格式中遗漏了一些东西。

我不明白的另一件事是它说“HttpParser”,但我正在寻找 WebSocket 握手。

对此的任何说明都将非常感激,并且一如既往,当我得到答案时,我会使用给定的答案正确地制作一个小教程来帮助其他开发人员并为他们提供一些可供引用的代码。

PS:如果需要的话,我可以在 GitHub 上上传我的代码,没有问题。

感谢您的宝贵时间。

最佳答案

很可能您的服务器配置错误,不支持 WebSocket。

我建议您按照说明启动 CometD 演示服务器 here ,然后尝试你的 C 客户端。

我刚刚尝试了您的升级请求(只是替换了主机名和端口),效果很好。

关于c - WebSocket 握手请求后服务器给出 http 400 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30484488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com