Bosh multiple streams with strophe as a client - xmpp

I am trying to build a group chat application by using Bosh over XMPP and stophe as a client. I am very new to Bosh and I have following questions
1) Does stophe support bosh multiple streams out of the box?
2) For every user, there would be a one bosh session with their own stream ? or for one chat session there will be one bosh session with multiple streams ?
Example: I have user1, user2 and user3 who are part of chat session. So there will be one bosh session for chat session which will be shared by all the users or every user will have their own bosh session
Thanks,
Avinash

I strongly recommend you this book:
Professional XMPP Programming with Javascript and JQuery - Jack Moffitt
And in special this chapter:
Chapter 8 Group Chatting: A Multi‑User Chat Client......165
I'm sure that all the answers for all your questions are there.
I'm building single chat an application javascript+strophejs just reading this book.
Good luck.

Related

Openfire XMPP Bot over Channels

I am using Openfire as an XMPP server for building a customer support Bot framework.
I am planning to make use of channels/groups for the same. I am keen to use channels as there might be multiple human agents and a bot listening to the same conversation. So I am likely to have a group/channel for each individual.
I want the messages to be read and processed by my custom server. How do I go about this ? I couldn't find any plugin that allows me to intercept the messages and return back processed response.
Any recommendations ?
You can also create your an own openfire bot plugin if you are familiar with Java (small example: https://rmsol.de/2018/03/06/Openfire_Bot/). Otherwise create bot as a client lilke dontknow suggested (The "bot/client" will join every channel you like and e.g. listen for specific keywords)
I figured out that since Openfire is an XMPP Communication software, its best to just use a custom XMPP client ( on your own server ) to listen to all the messages and process it from there and reply back from the XMPP Client as well.
So if I have a Nodejs server, I will create a Node XMPP Client and listen to XMPP messages coming via Openfire from other users, will process them and reply back with custom messages which Openfire will send back to the user.

XMPP Ejabberd chat server

I want to customize my ejabberd chat server for following functionality.
Group Chat
Broad Casting Messages
user logged in from 2 clients (as in web.whatsapp.com)
What config changes do I require for the same?
Ejabberd supports all the functionality you have mentioned.
1) Group Chat - The server should support XEP-0045 for Multi User Chat. Ejabberd supports that with the module mod_muc module. You can read the mod_muc docs for configuration
2) Broad Casting Messages - The server should support XEP-0033 for Extended Stanza Messaging. Ejabberd supports this with mod_multicast module.
3) For user logging in through 2 clients, please read this https://github.com/processone/ejabberd/issues/72

Sharing Jabber chat session between multiple clients

I'm using Jitsi on client side and ejabberd on server.
It seems that the chat sessions are specific to clients, i.e. if I'm logged in to the same account from 2 different clients, there will be 2 separate sessions, and one can't see what's happening in another.
Is it possible to share the sessions for the same account on all clients? Like Skype or GTalk.
If yes, is it a server configuration or client?
Thank you.
I think what you're looking for is XEP-0280 Message Carbons. Basically the server takes care of relaying the chat to all of your online resources so that you have the same chat session across all devices.
You even get chatstates from all of your other resources so you can infer whether or not you should show an unread IM notification to the user on your resource or not. You'll need client and server support for this, and it looks like ejabberd has implemented it via this module.

Facebook Chat, XMPP, Setting presence?

When changing the presence in Browser (offline/online) in Facebook Chat, the chat system sends the XMPP message in form:
<presence to="-myidhere#chat.facebook.com/adfskjfskjdfh" from="-otheridhere#chat.facebook.com" type="unavailable">
When I send my own presence from non-browser side (xmpp client) to the browser side with exactly same syntax, it seem not to effect. What I am missing here ?
Thanks a lot,
-Mika
It seems like you can't do that with the facebook xmpp implementation, as they write in the documentation:
Facebook Chat should be compatible with every XMPP client, but is not
a full XMPP server. It should be thought of as a proxy into the world
of Facebook Chat on www.facebook.com. As a result, it has several
behaviors that differ slightly from what you would expect from a
traditional XMPP service
There's an open bug on this matter: XMPP: can't change availability, and also this thread also talks about it: Xmpp chat invisible presence.
Also, don't expect the fb apis to have the same functionality as you get using the fb webpage.
They obviously don't open everything they have to the apis.

Facebook chat, GTalk with XMPP?

I'm still not quite sure what XMPP is. However I understand it is a protocol which drives many IM services such as FB and GTalk.
What I'm asking is, is it possible for FB accounts to chat to other XMPP accounts (e.g. GTalk) ? Like #hotmail.com emails can email #gmail.com (decentralized) rather than only hotmail.com to hotmail.com etc.
Thanks
Sadly not. At least currently. Facebook does not federate, meaning it does not make or accept connections to or from other XMPP servers.
Of historical note is the fact that Google did not originally federate gmail.com. They enabled this 6 months after they launched Google Talk. There's hope for Facebook yet. Maybe.
Facebook does not provide an XMPP server, just an XMPP API, so it's not possible to have all the operations available at a XMPP server.
As you can see from this link
Facebook Chat should be compatible with every XMPP client, but is not
a full XMPP server.