changeset 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
parents 1f7820f68868
children 68ebc52222dc
files mod_candy/mod_candy.lua mod_candy/www_files/index.html
diffstat 2 files changed, 14 insertions(+), 4 deletions(-) [+]
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";
--- a/mod_candy/www_files/index.html	Sun Jan 08 11:29:13 2017 +0100
+++ b/mod_candy/www_files/index.html	Tue Jan 10 14:11:56 2017 +0100
@@ -13,7 +13,7 @@
 	<script type="text/javascript" src="prosody.js"></script><!-- Virtual file generated by mod_candy -->
 	<script type="text/javascript">
 		$(document).ready(function() {
-			Candy.init(Prosody.bosh_path, {
+			Candy.init(Prosody.connect_path, {
 				core: {
 					// only set this to true if developing / debugging errors
 					debug: false,