snikket-server icon indicating copy to clipboard operation
snikket-server copied to clipboard

Add a web chat client

Open KillianKemps opened this issue 4 years ago • 6 comments

I'm quite new to the XMPP ecosystem, but I discovered that there is a web interface for using XMPP and that you already added the conversejs module here.

However, nothing is accessible on chat.example.com/conversejs, it returns me a 404. What is still needed to deploy it? Do we need to add the module name to the configuration file? Is it sufficient?

From what I understand from the documentation there isn't much to be done. So maybe it could be a great improvement to have a web interface and have one XMPP web interface available on all desktops (GNU/Linux, Mac OS and Windows).

KillianKemps avatar Apr 19 '20 16:04 KillianKemps

Is this still being looked at?

mitchellurgero avatar Dec 19 '21 09:12 mitchellurgero

Snikket is still early alpha, so I'd think most things including a web client should be thought of over a long span of time.

Converse.js is a good starting point sure, but these things do take time without money and labour. :)

MaybeThisIsRu avatar Dec 20 '21 14:12 MaybeThisIsRu

Indeed. @mitchellurgero the latest release exposes the necessary interfaces (e.g. websockets) for many XMPP clients (such as Converse.js) to be able to connect to a Snikket instance. But none of the web clients currently have all the features of the native Snikket apps (e.g. audio/video calls, end-to-end encryption, etc.). More info in this FAQ entry.

A web client is firmly on our roadmap, but it would require someone to work on it. Right now I have my hands full with other aspects of the project, but if we can find a willing developer and/or a way to fund someone to work on it, we will. I expect to look harder for options next year (I'm currently busy working on a significant update for the iOS app, and finishing the account import/export functionality - the latter being an EU-funded project with a January deadline).

Hope this helps give some insight into the status of this issue :)

mwild1 avatar Dec 20 '21 14:12 mwild1

Maybe you should take a look at https://www.jsxc.org/ ;)

I used it back in its early stages for some of my projects with a prosody server and it worked very well and easily !

Maastodonte avatar Mar 12 '22 09:03 Maastodonte

mod_conversejs is available in the snikket-sever prosody container! But I can't figure out how to load it

I enter the container like

cont_id=$(docker ps --format "{{.ID}}" --filter ancestor=snikket/snikket-server:stable)
docker exec -it ${cont_id} bash 

And have played around a bit

# conversejs module file exists!
find /etc/prosody/ -iname '*converse*' # /etc/prosody/modules/mod_conversejs

# already tried to modify config to load conversejs
grep conversejs /etc/prosody/prosody.cfg.lua   #   "mod_conversejs";

# also tried in shell
prosodyctl shell
     # "0 hosts" is probably not a good sign
     module:reload("mod_conversejs") # | OK: Module reloaded on 0 hosts

    # cf. successfully reloading a working module
    module:reload("http_files")      # | OK: Module reloaded on 1 host

WillForan avatar Feb 10 '24 16:02 WillForan

prosodyctl shell module load conversejs

(a shortcut for running module:load("conversejs") when you're actually in the shell - you were close!)

I'm not sure how much further you will get, though, because we only proxy specific URLs to prosody and conversejs is not one of them, so I don't think you'll be able to access it once loaded.

But note that you don't need do load anything in Snikket/Prosody itself You just need to host converse.js somewhere (it's just a bunch of static files) and configure it appropriately. Snikket already exposes the websocket URL and autodiscovery information that Converse.js needs to connect.

A lot of people also use Movim with Snikket (that one isn't just a bunch of static files, but it it also does a lot more).

mwild1 avatar Feb 10 '24 18:02 mwild1