Lua 用于 heka 的网络套接字
Lua websockets for heka
我正在使用 lua-websockets https://github.com/lipp/lua-websockets 来尝试获取网络套接字服务器 运行ning。
使用他们提供的 copas 示例:
local copas = require'copas'
local server = require'websocket'.server.copas.listen
{
port = 8080,
protocols = {
echo = function(ws)
while true do
local message = ws:receive()
if message then
ws:send(message)
else
ws:close()
return
end
end
end
}
}
copas.loop()
这有效并开始侦听端口 8080,我能够连接并获得回显响应。
问题是当我尝试将它与 heka 集成时。我启动 heka,它启动了 websocket 服务器,但在加载插件时挂起。当它尝试 "load" 一个插件时,它会执行 lua 脚本。
现在我的问题是,如何运行 websocket 服务器并向heka 发送一个"success" 让它继续启动。简单来说就是:如果 websocket 正在监听 8080 return 到 heka 并且说 lua 脚本已经成功执行。
提前致谢!
不要调用 copas.loop()
,因为它会进入处理所有 copas 套接字交互的无限循环。您需要改用 copas.step()
(请参阅 controlling copas 部分)并在适当的时间从您的 heka 代码中调用它(此调用将在超时时 return false
和 true
当它处理某些东西时)。在 GUI 应用程序中,它可以从 IDLE 处理程序中调用。
我正在使用 lua-websockets https://github.com/lipp/lua-websockets 来尝试获取网络套接字服务器 运行ning。
使用他们提供的 copas 示例:
local copas = require'copas'
local server = require'websocket'.server.copas.listen
{
port = 8080,
protocols = {
echo = function(ws)
while true do
local message = ws:receive()
if message then
ws:send(message)
else
ws:close()
return
end
end
end
}
}
copas.loop()
这有效并开始侦听端口 8080,我能够连接并获得回显响应。
问题是当我尝试将它与 heka 集成时。我启动 heka,它启动了 websocket 服务器,但在加载插件时挂起。当它尝试 "load" 一个插件时,它会执行 lua 脚本。
现在我的问题是,如何运行 websocket 服务器并向heka 发送一个"success" 让它继续启动。简单来说就是:如果 websocket 正在监听 8080 return 到 heka 并且说 lua 脚本已经成功执行。
提前致谢!
不要调用 copas.loop()
,因为它会进入处理所有 copas 套接字交互的无限循环。您需要改用 copas.step()
(请参阅 controlling copas 部分)并在适当的时间从您的 heka 代码中调用它(此调用将在超时时 return false
和 true
当它处理某些东西时)。在 GUI 应用程序中,它可以从 IDLE 处理程序中调用。