Chats, mechanism, protocol, scope.
Hello! - brief intro
I run a small community site that's been running since the '90's. For a couple of years I've been looking for the right next step for the platform it runs on. I think nodebb, now it runs on postgresql, and can be adapted to run on k8s (don't flame me!), is right for us.
One of the key features I'd like (will have to write), is notifications, user management, etc. by xmpp.
I was curious about what was in nodebb in respect of the chat feature, and how that worked. Can't find much on that, without dredging through code... so I hope you don't mind me asking.
Would like to perhaps bridge forum activity to a xmpp group chat, have notifications, etc. Planning to auth via oauth2 and keycloak, for SSO to other services (including xmpp - external server, but not email).
Clearly I'm in the foothills of a steep learning curve...no I don't really program in js...or much at all regularly the days but, you know..( been coding on and off since the eighties). On the whole I like to keep things as vanilla as possible, and limit any mods to mainstream, popular (and thus) well understood and maintained plugins....but...research.
Any information, advice, or pointers, appreciated.
Thanks... and hello!
@jürgen Quite happy. Any questions or information, is good with me:
What do I want to know:
Where do I go to find out how chats work - protocol, hooks, integration?
What is the api availability, in terms of leveraging it for extension?
What level of scope for unplugging it, and hooking something in it's place?
I have xmpp infrastructure and services I'd like to integrate with nodebb - but it's not a dealbreaker. Anyone with any similar experience/need?
Once you raised your questions, @Paul-Chambers, my seems to fit even better as I believed.
I am facing the following problem. Since our forum is sport related there tends to be lot of communication during game time (aka: Ooh what a monster block). We would like to move those shouts into a chat. Other as shoutbox or global chat everybody should be able to sign in or out to that chat by his own.
So my question seems to come down to:
- is there the possibility to sign into (and out of) a chat room
I am not absolutely sure, but I believe I saw the possibility to create a chatroom using the API in one of the above mentioned plugins.
I am taking from this, that there is nobody able to provide pointers on how chats work (or a good place to look!), and how to add/alter functionality.
I'll see what I can find further from direct search and trying to look at code, but I guess the most likely is the fallback position - don't mess, just provide other services elsewhere.
I could answer your questions in detail but to actually do anything you'll just need to look at the code anyways. Here's a quick overview:
Chats are stored in the database (duh) and are sent in and out through socket.io
There are several hooks which you can see on the hooks wiki page. Replacing the chat functionality entirely is possible but won't be easy. The best way of doing so would probably be too completely replace the interface on the frontend to bypass NodeBB and go directly to whatever service you plan on using.
Users can "Leave" chat rooms individually.
The global chat plugin is probably the best place to start looking for examples.
@pitaj Thank you for that, it's actually very helpful (I'm a complete newbie to nodebb so even the most basic pointer has value to me).
I have done some work around what I want to achieve, and I think it's going to be best achieved by separate auth (oauth2/oidc) provider (keycloak) which will allow users to authenticate and access both the xmpp and nodebb. I can keep nodebb mostly vanilla, and perhaps look at notification (and maybe pub/sub) to xmpp.
That way it leaves things pretty much as they come out of the box (experience teaches me this is easier for maintenance and updates), with functionality linked on a basic level, but with people able to access the same member list on any services.
This is the simple, clear, direct help I need. "Chats are stored in the database (duh) and are sent in and out through socket.io".
@paul-chambers please do update on your nodebb postgresql journey, as I am interested in this db.
p.s.; welcome to nodebb. i am old dog as well and nodebb is really great ross - real open source software. toss in very helpful devs and community and you've got a total package you likely haven't seen since... uh.. the nineties? heh...