【问题标题】:Is it possible to send raw text to a server using php curl?是否可以使用 php curl 将原始文本发送到服务器?
【发布时间】:2014-07-23 02:09:30
【问题描述】:

我正在尝试使用 curl 进行持久连接,就像 websockets 一样。一旦建立连接,客户端和服务器每次只发送小文本消息而不是新的 http 请求。

对于 websocket 请求,我能够完成握手并从服务器接收消息(连接保持打开状态)。唯一的问题是 curl 不会发送没有“HTTP/1.1”标头的任何内容。

每次运行 curl_exec 时,curl 都会发送“GET / HTTP/1.1”。建立连接后就不需要了。

我可以使用 curls 自定义请求选项来发送我的消息,但这会形成像“消息/HTTP/1.1”这样的标头。

如果有办法从标头中消除“HTTP/1.1”,那就太好了。

我知道 php 套接字是一个更好的选择,但我只是好奇是否有一种使用 curl 的 hacky 方法来实现这一点(可能是 websocket 客户端)..

有什么想法吗?

【问题讨论】:

  • curl 不是已经默认使用 keep-alive 了吗? serverfault.com/questions/199434/…
  • 可以,但我如何回复来自服务器的消息?一旦建立连接..服务器不理解http请求,它只寻找hybi10编码消息(根据hybi10 websocket规范)..并且curl似乎只发送问题中提到的http请求。

标签: php sockets curl


【解决方案1】:

Curl 在设计时考虑了 http 协议,它是无状态的(您打开连接、发送请求、等待回复并关闭连接)。

但是,您可以根据需要使用 curl。你需要使用CURLOPT_CONNECT_ONLY

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2015-10-14
    • 2021-08-26
    • 2013-09-24
    • 2020-03-11
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多