0

我是 erlang 和整体编程的新手,我正在寻找一种通过使用套接字连接到 twitter API 的方法,如果有的话。所以我想知道的是,无论如何要在套接字中传递http请求/ URL来这样做吗?

我很想阅读或查看任何信息。示例代码,我可以在其中看到 gen_tcp、socket、ssl 或任何您认为最聪明的方法。(连接到推特/发送请求)。

除非我真的需要,否则我不希望使用另一个构建的库。

提前致谢, 埃拉赫

4

1 回答 1

0

听起来您需要 HTTP 客户端库。我看不出有任何理由通过 TCP 套接字和gen_tcp. Erlang 标准库已经包含一个叫做httpc的库。

还有很多用于一般用途的第三方 http 客户端:

  1. lhttpc
  2. 伊布罗斯韦
  3. 哈克尼

对于与 API 的交互,我建议您看一下gun。正如项目页面所说,它遵循下一个目标:

Gun 旨在提供一个易于使用的客户端,兼容 HTTP、SPDY 和 Websocket。

枪始终连接。它将保持与服务器的永久连接,一旦服务器关闭它就会重新打开它,从而为进来的请求节省时间。

所有连接都受到自动监督,使开发人员可以专注于编写代码而无需担心。

如果您需要更多关于gen_tcp模块和网络交互的一般信息,我建议您从这本好书开始。

UPD: 更具体地说是关于 twitter 流 API(你是说这个吗?)。要读取流数据,您可以使用 http 客户端的流接口:

ok = application:start(inets).
{ok, Ref} = httpc:request(get, {RequestURL, RequestHeaders}, [], [{sync, false}, {stream, self}]).

之后,您将在进程邮箱中收到以下消息:

  1. 第一条消息将是{http, {Ref, stream_start, ResponseHeaders}}
  2. 下一条消息将是{http, {Ref, stream, ResponseBodyChunk}}
  3. 最后一条消息将是{http, {Ref, stream_end, ResponseHeaders}}

在你开始这样的流之后,你应该只通过接收接收传入的消息,并根据 twitter 流协议处理它。

请参阅有关 httpc 库的文档。你真的不应该gen_tcp在这里使用套接字。

于 2014-10-26T11:55:38.767 回答