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 falsetrue 当它处理某些东西时)。在 GUI 应用程序中,它可以从 IDLE 处理程序中调用。