> nothing is stopping you to build a layer of compatibility
I don't have 10 engineers. It's already super complex. Adding extra layer will just make things worse. I reckon custom solution would be simpler for majority of use cases.
there are Java, Javascript and Swift libraries for XMPP
> I don't have 10 engineers. It's already super complex
The point is XMPP is a solved problem, you can simply use what you need of it, making it json over websocket won't make it anyway easier, you would use a library anyway
Creating protocols just for the sake of it, it's the reason why this comic exists https://xkcd.com/927/
p.s.: Movim, afaik, solves that problem for you
When you use Movim, it acts as an intermediary between the user's browser and an XMPP server. All the data that is sent and received by these two parties are managed by the Movim core, some of them are also saved in a database (for cache purposes).
From the browser perspective, all communication with Movim is done using WebSockets (except for the "default" page loading). These sockets are proxied through your web-server to the Movim daemon. On the XMPP side Movim connects using pure TCP connections (like any XMPP client).
Link me a JavaScript library that works cross platform on both iOS and Android with unified interface in React Native. Ideally it's maintained and if you are asking me why I wrote it, it's also because there was nothing available 2 years ago.
Majority of JS XMPP libraries depend on the DOM for xml parsing - see strophe.js for example. This won't work in all JSC runtimes.
> The point is XMPP is a solved problem
Ye, which problem exactly? All of them are solved partially. Let me give you example, imagine you have a platform where users can chat in chatrooms (as simple as it gets really). On your platform you have a username and you are supposed to communicate with others with your username. You'd think xmpp is perfect! Nope, you'll have to fork the xmpp server for this use case. Why? Well, because XMPP standard supports nickname changing, which means in a context of a platform it would allow nickname spoofing. So you need to modify and add some security rules on top of it. "Solved problem" of course...
as other have already said, Xmpp.js works quite well
If it's Javascript it's already cross platform
> Ye, which problem exactly?
communicating via XMPP in a standardized way
> All of them are solved partially
And a new protocol based on half backed technologies would change that, how exactly?
> On your platform you have a username and you are supposed to communicate with others with your username.
On any forum or BBS I've been part of in my life, I've always used a nick, that changed over time.
> Well, because XMPP standard supports nickname changing, which means in a context of a platform it would allow nickname spoofing.
That's a feature, not a bug.
In 1995 I could change my nick on IRC, in 1997 I could change my nick on ICQ, I still can change nick on Skype today (my artists friends do it on facebook all the times)
Anyway, nick spoofing on XMPP is hardly a problem and it's not an XMPP fault.
Have you ever tried to search for "someone has been impersonating me with FB messenger" on a search engine?
> "Solved problem" of course.
XMPP it's a solved problem, your chat where nick cannot be changed is your problem.
Every implementation of standard protocols requires work, HTTP is a solved problem, but edge cases still exist.
Name one standard federated protocol that could help you with that and make it simpler, please.
React Native - iOS JavaScript runtime + Android JSC runtime.
> nothing is stopping you to build a layer of compatibility
I don't have 10 engineers. It's already super complex. Adding extra layer will just make things worse. I reckon custom solution would be simpler for majority of use cases.