Lua 适用于 Heka 的 WebSockets。

我正在使用lua-websockets https://github.com/lipp/lua-websockets 尝试运行一个 WebSocket 服务器。

我使用他们提供的 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端口上进行侦听,我能够连接并获得 echo 响应。

问题是当我尝试将其与 heka 集成时。我启动 heka 并它启动了 websocket 服务器,但卡在“正在加载插件”。当它尝试“加载”插件时,它会执行lua脚本。

我的问题是,如何运行 WebSocket 服务器并向 heka 发送“成功”以让它继续启动。简单来说,如果 WebSocket 在 8080 上侦听,则返回给 heka 并说已成功执行 lua 脚本。

提前感谢!

点赞
用户1442917
用户1442917

请勿调用 copas.loop() ,因为它会进入一个处理所有 copas 套接字交互的无限循环。相反,您需要使用 copas.step()(请参阅 controlling copas 部分),并在适当的时间从您的 heka 代码中调用它(此调用将在超时时返回 false,并在处理输出时返回 true)。在 GUI 应用程序中,它可以从 IDLE 处理程序中调用。

不要调用 `copas.loop()` ,因为它会进入一个处理所有 copas 套接字交互的无限循环。相反,您需要使用 `copas.step()`(请参阅 [controlling copas](http://keplerproject.github.io/copas/manual.html#control) 部分),并在适当的时间从您的 heka 代码中调用它(此调用将在超时时返回 `false`,并在处理输出时返回 `true`)。在 GUI 应用程序中,它可以从 IDLE 处理程序中调用。
2016-01-05 05:29:47