Lua 如何检测连接超时?

Lua 如何检测连接超时?,lua,api-gateway,kong,kong-plugin,kong-ingress,Lua,Api Gateway,Kong,Kong Plugin,Kong Ingress,目前,每当上游服务中断时,香港将抛出 “{”消息“:“无法从环平衡器获取对等方”}” 我正在尝试创建一个自定义插件来检测连接超时并向客户端返回一条自定义消息,我现在面临的拦截器正在我的自定义插件中写入lua代码来检测超时。我试过使用 if(kong.response.get_source() == "error") 但这似乎也没有检测到超时 有人知道我在编写自定义kong插件时应该如何检测连接超时吗?对不起,我没听清楚。因为我不知道你的函数会返回什么 如果kong.resp

目前,每当上游服务中断时,香港将抛出 “{”消息“:“无法从环平衡器获取对等方”}”

我正在尝试创建一个自定义插件来检测连接超时并向客户端返回一条自定义消息,我现在面临的拦截器正在我的自定义插件中写入lua代码来检测超时。我试过使用

if(kong.response.get_source() == "error")
但这似乎也没有检测到超时


有人知道我在编写自定义kong插件时应该如何检测连接超时吗?

对不起,我没听清楚。因为我不知道你的函数会返回什么

如果
kong.response.get_source()
返回一个字符串
{“message”:“无法从环平衡器获取对等方”}

您需要使用JSON库来解析它

local json = require("json")
local res = json.deceode(kong.response.get_source())
if res.message == "xxx" then

end
但是您的
消息有点长。您可以向JSON字符串添加一个新的键值来表示状态

例如:
“{”status:“error”,“message:“无法从环平衡器获取对等方”}“

然后你可以写这样的代码

local json = require("json")
local res = json.deceode(kong.response.get_source())
if res.status == "error" then

end

我只是看了看照片

我发现
kong.response.get_source()
的返回值是HTTP状态码,比如200/500

您可以尝试打印(kong.response.get_source())
并查看结果。

Hi@mushromomogu,“{”消息“:“无法从环形平衡器中获取对等方”}”我得到的响应不是来自我编写的任何函数,Idk,它来自其中任何一个函数,我试图截取显示给客户端的消息,这就是我创建自定义插件的原因。在插件中,我使用了if(kong.response.get_source()=“error”),根据,它应该在处理请求时捕获错误,例如:连接到上游服务时超时。但这似乎不起作用。