我正在使用lua套接字https://github.com/lipp/lua-websockets来尝试并运行一个websockets服务器。
使用他们提供的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脚本已经成功执行。
提前感谢!
发布于 2016-01-05 05:29:47
不要调用copas.loop(),因为它进入一个处理所有copas套接字交互的不定循环。您需要使用copas.step() (请参阅控制copas部分),并在适当的时候从heka代码中调用它(这个调用将在超时时返回false,并在处理某些事情时返回true )。在GUI应用程序中,可以从空闲处理程序调用它。
https://stackoverflow.com/questions/34589634
复制相似问题