【问题标题】:Erlang. Asynchronous http request. How to know when connection is broken?二郎。异步http请求。如何知道连接何时断开?
【发布时间】:2020-10-06 04:47:22
【问题描述】:

使用httpc HTTP 客户端向某个服务器发出异步请求

httpc:request(get, {Url, []}, [], [{sync, false}, {stream,
self}])

其中Url 是服务器的URL。数据由 handle_info/2gen_server 中调用 httpc:request/4 但是当连接断开并且没有 stream_end 消息时我应该收到消息。使用超时对我来说不可行,因为服务器响应可能需要很长时间。

是否可以在handle_info/2 中收到有关断开连接的消息?如果没有,请建议如何知道连接何时断开?

【问题讨论】:

    标签: http asynchronous erlang


    【解决方案1】:

    如需更繁重的 HTTP 请求,请使用 ibrowse:

    https://github.com/cmullaparthi/ibrowse

    它有更多的旋钮可以根据请求旋转,并且更完整 w.r.t.很多东西。如果 http/httpc 不能解决你的问题,那么去 ibrowse 是否可以解决这个问题值得研究。

    【讨论】:

    • 感谢您的回答。我之前尝试过使用 ibrowse。但是,似乎出了点问题。我正在为 twitter 流 API 编写客户端,当我使用 ibrowse 时,我什么也得不到,例如 - pastebin.com/fJNELWJE 。当我使用 erlang http 客户端时,一切正常。 IE。收到很多消息。
    • 我什么时候可以从 twitter 获取消息?..因为我确定他们是在连接后发送的。
    • 它一定是在你的最后,因为你的例子在这里完美运行,刷新后完整输出。
    • Adam:你最后解决了吗,我也在努力解决这个问题,但遇到了同样的问题。
    • 现在,使用gunhackney 或我最喜欢的fusco 可能会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多