我正在使用 boost::asio 向 Facebook 发出异步 http 请求(主要将客户端令牌交换为我可以进行 API 调用的令牌)。大多数时候它工作得很好,几乎可以立即返回数据。
但是有时它会在连接过程中挂起 3 或 4 秒,然后返回(请记住这是 SSL)。有时它甚至会返回“连接被拒绝”错误。这是每次都传递相同的数据(我自己的 facebook 令牌用于本地测试)。
我不确定我是否搞砸了(我的代码与 boost 网站上的示例几乎完全相同)或者这是因为 Facebook。Facebook 服务器挂起连接到可能超时的点是否很常见?
我的连接代码如下所示:
m_sslSocket.set_verify_mode(boost::asio::ssl::verify_peer);
m_sslSocket.set_verify_callback(boost::asio::ssl::rfc2818_verification(a_server));
boost::asio::async_connect(m_sslSocket.lowest_layer(), a_endpointIterator, boost::bind(&BoostHttpRequest::HandleConnect, this, boost::asio::placeholders::error));
考虑到它在大多数情况下都可以正常工作并且一直挂在连接上,我猜这是 Facebook 的问题,而不是代码的问题。任何从事 Facebook API 调用的人都可以投入两分钱吗?