Software /
code /
prosody-modules
Comparison
mod_candy/mod_candy.lua @ 2440:7814a5c7fee8
mod_candy: Provide websocket URI if mod_websocket is loaded, fall back to BOSH
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 10 Jan 2017 14:11:56 +0100 |
parent | 1864:991a5f74f848 |
child | 2449:c9372cfac3b7 |
comparison
equal
deleted
inserted
replaced
2439:1f7820f68868 | 2440:7814a5c7fee8 |
---|---|
1 -- mod_candy.lua | 1 -- mod_candy.lua |
2 -- Copyright (C) 2013 Kim Alvefur | 2 -- Copyright (C) 2013-2017 Kim Alvefur |
3 | 3 |
4 local json_encode = require"util.json".encode; | 4 local json_encode = require"util.json".encode; |
5 local is_module_loaded = require "core.modulemanager".is_loaded; | |
5 | 6 |
6 module:depends"bosh"; | |
7 local serve = module:depends"http_files".serve; | 7 local serve = module:depends"http_files".serve; |
8 | 8 |
9 module:provides("http", { | 9 module:provides("http", { |
10 route = { | 10 route = { |
11 ["GET /prosody.js"] = function(event) | 11 ["GET /prosody.js"] = function(event) |
12 event.response.headers.content_type = "text/javascript"; | 12 event.response.headers.content_type = "text/javascript"; |
13 local connect_path; | |
14 if is_module_loaded(module.host, "websocket") then | |
15 connect_path = module:http_url("websocket", "xmpp-websocket"):gsub("^http", "ws"); | |
16 else | |
17 if not is_module_loaded(module.host, "bosh") then | |
18 module:depends("bosh"); | |
19 end | |
20 connect_path = module:http_url("bosh", "/http-bind"); | |
21 end | |
22 | |
13 return ("// Generated by Prosody\n" | 23 return ("// Generated by Prosody\n" |
14 .."var Prosody = %s;\n") | 24 .."var Prosody = %s;\n") |
15 :format(json_encode({ | 25 :format(json_encode({ |
16 bosh_path = module:http_url("bosh","/http-bind"); | 26 connect_path = connect_path; |
17 version = prosody.version; | 27 version = prosody.version; |
18 host = module:get_host(); | 28 host = module:get_host(); |
19 anonymous = module:get_option_string("authentication") == "anonymous"; | 29 anonymous = module:get_option_string("authentication") == "anonymous"; |
20 })); | 30 })); |
21 end; | 31 end; |