在网上,我找到了几个如何发出 HTTPS 请求的示例。然而,它们都有一个非常严重的缺点:它们在从服务器接收到所有数据后立即关闭 TCP 连接。这不好。
这是一个例子
https = require('ssl.https')
local data, code = https.request('https://httpbin.org/get')
如何以最小的痛苦来补充它,以便连接不会关闭?
在网上,我找到了几个如何发出 HTTPS 请求的示例。然而,它们都有一个非常严重的缺点:它们在从服务器接收到所有数据后立即关闭 TCP 连接。这不好。
这是一个例子
https = require('ssl.https')
local data, code = https.request('https://httpbin.org/get')
如何以最小的痛苦来补充它,以便连接不会关闭?
该库
LuaSocket
(在示例代码中使用)不支持持久性 http(s) 连接。因此,不能免除最小痛苦,必须使用其他一些库。例如,您可以使用Lua-cURL:
相反,在这个库中,默认情况下连接不会关闭并被重用(即使在调用之后
e:close
),在这里您需要使用特殊的CURLOPT_FORBID_REUSE选项来断开连接(如果需要)。在日志中可以观察到打开/重用/关闭连接的整个过程:
执行第一个请求后
curl
,报告连接保持打开状态:在执行第二个请求之前,它找到它并愉快地重用它:
但是在第二次请求之后,由于在第二次请求之前的例子中有禁止重用连接,所以关闭了:
在套接字上: