Diff

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
line wrap: on
line diff
--- a/mod_candy/mod_candy.lua	Sun Jan 08 11:29:13 2017 +0100
+++ b/mod_candy/mod_candy.lua	Tue Jan 10 14:11:56 2017 +0100
@@ -1,19 +1,29 @@
 -- mod_candy.lua
--- Copyright (C) 2013 Kim Alvefur
+-- Copyright (C) 2013-2017 Kim Alvefur
 
 local json_encode = require"util.json".encode;
+local is_module_loaded = require "core.modulemanager".is_loaded;
 
-module:depends"bosh";
 local serve = module:depends"http_files".serve;
 
 module:provides("http", {
 	route = {
 		["GET /prosody.js"] = function(event)
 			event.response.headers.content_type = "text/javascript";
+			local connect_path;
+			if is_module_loaded(module.host, "websocket") then
+				connect_path = module:http_url("websocket", "xmpp-websocket"):gsub("^http", "ws");
+			else
+				if not is_module_loaded(module.host, "bosh") then
+					module:depends("bosh");
+				end
+				connect_path = module:http_url("bosh", "/http-bind");
+			end
+
 			return ("// Generated by Prosody\n"
 				.."var Prosody = %s;\n")
 					:format(json_encode({
-						bosh_path = module:http_url("bosh","/http-bind");
+						connect_path = connect_path;
 						version = prosody.version;
 						host = module:get_host();
 						anonymous = module:get_option_string("authentication") == "anonymous";