我正在使用lua-websockets https://github.com/lipp/lua-websockets来尝试运行Web套接字服务器。
使用他们提供的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服务器但挂起在加载插件。当它试图“加载”插件时,它会执行lua脚本。
现在我的问题是,如何运行websocket服务器并向heka发送“成功”以让它继续启动。这只是:如果websocket正在监听8080返回heka并说lua脚本已成功执行。
提前致谢!
答案 0 :(得分:0)
当它进入一个处理所有copas套接字交互的无限循环时,不要调用copas.loop()
。您需要改为使用copas.step()
(请参阅controlling copas部分)并在适当的时间从您的heka代码中调用它(此调用将在超时时返回false
并在true
时返回处理某事)。在GUI应用程序中,可以从IDLE处理程序调用它。