Software / code / prosody-modules
Comparison
mod_http_stats_stream/mod_http_stats_stream.lua @ 3635:fd054689a64c
mod_http_stats_stream: Use existing header preparation
This allows the CORS support in mod_http to work.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 31 Jul 2019 18:55:06 +0200 |
| parent | 2432:47a6f01231b2 |
| child | 3643:740870196b97 |
comparison
equal
deleted
inserted
replaced
| 3634:915e32d5a147 | 3635:fd054689a64c |
|---|---|
| 1 local statsman = require "core.statsmanager"; | 1 local statsman = require "core.statsmanager"; |
| 2 local http = require "net.http.server"; | |
| 2 local json = require "util.json"; | 3 local json = require "util.json"; |
| 3 | 4 |
| 4 local sessions = {}; | 5 local sessions = {}; |
| 5 | 6 |
| 6 local function updates_client_closed(response) | 7 local function updates_client_closed(response) |
| 11 local function get_updates(event) | 12 local function get_updates(event) |
| 12 local request, response = event.request, event.response; | 13 local request, response = event.request, event.response; |
| 13 | 14 |
| 14 response.on_destroy = updates_client_closed; | 15 response.on_destroy = updates_client_closed; |
| 15 | 16 |
| 16 response.conn:write(table.concat({ | 17 response.headers.content_type = "text/event-stream"; |
| 17 "HTTP/1.1 200 OK"; | 18 response.headers.x_accel_buffering = "no"; -- for nginx maybe? |
| 18 "Content-Type: text/event-stream"; | 19 local resp = http.prepare_header(response); |
| 19 "X-Accel-Buffering: no"; -- For nginx maybe? | 20 table.insert(resp, "event: stats-full\r\n"); |
| 20 ""; | 21 table.insert(resp, "data: "); |
| 21 "event: stats-full"; | 22 table.insert(resp, json.encode(statsman.get_stats())); |
| 22 "data: "..json.encode(statsman.get_stats()); | 23 table.insert(resp, "\r\n\r\n"); |
| 23 ""; | 24 response.conn:write(table.concat(resp)); |
| 24 ""; | |
| 25 }, "\r\n")); | |
| 26 | 25 |
| 27 sessions[response] = request; | 26 sessions[response] = request; |
| 28 return true; | 27 return true; |
| 29 end | 28 end |
| 30 | 29 |