我是 erlang 和整体编程的新手,我正在寻找一种通过使用套接字连接到 twitter API 的方法,如果有的话。所以我想知道的是,无论如何要在套接字中传递http请求/ URL来这样做吗?
我很想阅读或查看任何信息。示例代码,我可以在其中看到 gen_tcp、socket、ssl 或任何您认为最聪明的方法。(连接到推特/发送请求)。
除非我真的需要,否则我不希望使用另一个构建的库。
提前致谢, 埃拉赫
听起来您需要 HTTP 客户端库。我看不出有任何理由通过 TCP 套接字和gen_tcp
. Erlang 标准库已经包含一个叫做httpc的库。
还有很多用于一般用途的第三方 http 客户端:
对于与 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}]).
之后,您将在进程邮箱中收到以下消息:
{http, {Ref, stream_start, ResponseHeaders}}
。{http, {Ref, stream, ResponseBodyChunk}}
。{http, {Ref, stream_end, ResponseHeaders}}
。在你开始这样的流之后,你应该只通过接收接收传入的消息,并根据 twitter 流协议处理它。
请参阅有关 httpc 库的文档。你真的不应该gen_tcp
在这里使用套接字。