Mercurial > prosody-modules
view mod_http_stats_stream/mod_http_stats_stream.lua @ 3117:dd6313ddd3e0
mod_lastlog: Split Values into Type/Default. (documentation)
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Sun, 17 Jun 2018 21:29:27 +0200 |
parents | 47a6f01231b2 |
children | fd054689a64c |
line wrap: on
line source
local statsman = require "core.statsmanager"; local json = require "util.json"; local sessions = {}; local function updates_client_closed(response) module:log("debug", "Streamstats client closed"); sessions[response] = nil; end local function get_updates(event) local request, response = event.request, event.response; response.on_destroy = updates_client_closed; response.conn:write(table.concat({ "HTTP/1.1 200 OK"; "Content-Type: text/event-stream"; "X-Accel-Buffering: no"; -- For nginx maybe? ""; "event: stats-full"; "data: "..json.encode(statsman.get_stats()); ""; ""; }, "\r\n")); sessions[response] = request; return true; end module:hook_global("stats-updated", function (event) local data = table.concat({ "event: stats-updated"; "data: "..json.encode(event.changed_stats); ""; ""; }, "\r\n") for response in pairs(sessions) do response.conn:write(data); end end); module:depends("http"); module:provides("http", { route = { GET = get_updates; } });