4 ms·
As a big fan of and small contributor to ejabberd (I run im.wordpress.com), one who has used Jack's excellent strophe.js, and one who is anxious to see websocke
by skeltoac 16y ago
As a big fan of and small contributor to ejabberd (I run im.wordpress.com), one who has used Jack's excellent strophe.js, and one who is anxious to see websockets in more use cases, I was pleased to read this news.
However, I still consider XMPP as the protocol of last resort when designing apps for the browser that don't map perfectly onto XMPP. I would sooner write a new protocol than set up a new ejabberd cluster. (This opinion is based on the quality of documentation available a year ago and may be out of date.)
- julien 16y agoDon't confuse the protocol and the server! It may be tricky to setup and ejabberd cluster, but you can't blame XMPP for that! Also, I wish people were more adventurous with XMPP in general and stop thinking that it's just a chat protocol.
- rexreed 16y agoWe're actually thinking of using XMPP as a server-to-server asynchronous messaging / pubsub protocol to help us with distributed processing and long running transactions. But I am already stretching my knowledge in this area and would love to chat with others who are thinking of using XMPP as a server-to-server protocol. Julien - can I pick your brain?
- seiji 16y agoIck. Do not pass go. Do not collect $200. For server-to-server passing, prefer (in order): 1. redis pubsub 2. zeromq (if you know what you're doing) 3. amqp (if you think you need it) 4. populate events to a DB transactionally then consume later Only use XMPP if your problem domain is "someone is paying me $LOTS to set up an XMPP service."
- rexreed 16y agoI'd like to understand more about this and your thoughts. Have you had experience using XMPP this way? Is there a specific reason why this wouldn't / shouldn't work? I know you prefer the other approaches, but other than simply preferring them, what is the issue with using XMPP this way? Specifically, what if the scenario is enabling communication between servers that you have limited control over and do not have shell / root access to install or manage a server? In this case, there wouldn't be an opportunity to install redis, 0mq, or amqp. The database approach might work, but the servers are distributed and might not allow remote connections. Why wouldn't XMPP work in this scenario using a public XMPP server? I'd like to learn more!
- seiji 16y agoFirst, XMPP obviously works. Google Chat is XMPP. Facebook Chat is XMPP (ejabberd). But SOAP works too. Doesn't mean I want to use it. My problem with XMPP is best illustrated by XEP-0060, the pubsub extension proposal: http://xmpp.org/extensions/xep-0060.html http://xmpp.org/extensions/xep-0060.html -- I don't have time to figure out that monstrosity. AMQP is at the limit of complexity as far as pubsub things go. It's complex enough to need explaining, but simple enough were you can understand it in an hour. If you want an in-depth discussion war about pros and cons, ask your question both on the redis mailing list and on the rabbitmq mailing list. I'd be interested in seeing how both communities respond to your requirement of running on limited access servers.
- rexreed 16y agoThanks for the response! Ok, so to summarize, XMPP works, but in your opinion, it's simply too complex to "figure out"? Basically, in my scenario, it could very well work as optimally as we want it to if we give ourselves time to understand it? I wish I could use zeromq or redis or amqp, but it just is not an option in this environment. I was wondering if there was some solid technical reason to not use XMPP, but it looks like there isn't one... it's just a matter of personal preference and wanting to avoid spending time on something. I'll charge ahead with the XMPP implementation in our scenario unless there's a good reason someone can see why not to.
- mnutt 16y agoTwitter had an XMPP feed at one point, but shut it down due to scaling issues and later brought up their current firehose/sitestreams service. Does anyone know if they ever talked about why XMPP didn't scale for them? Site streams requires making one connection per 100 users; perhaps they were having trouble sharding with XMPP?
- julien 16y agoI think they were mostly having issues because people would enter their gtalk jid to get content... and google obviously throttles the traffic pretty aggressively, so dev would not receive the content and would complain.
- julien 16y agoHappy to help. catch me on julien@superfeedr.com
- rexreed 16y agoTnx! Just sent you a message.
- StavrosK 16y agoDo you have any resources as to what XMPP actually is? I've only seen it mentioned in the chat protocol context.
- troystribling 16y agohttp://xmpp.org/ http://xmpp.org/
- deleted 16y ago[deleted]
- julien 16y agoIt's a messaging and presence protocol! We (at Superfeedr) use it for our infrastructure. Each piece of our application is an XMPP component which connects, sends messages to others and get messages from them. We are also starting to use it as a deploy tool as well.
- jallmann 16y agoI've been using ejabberd a lot lately and it's a really nice piece of software, and works very well. My biggest problem with XMPP as a whole is... well, it's XML. Not only is it heavier than it should be across the wire, it feels to me that the XML way of thinking leads to unnecessary verbosity when designing protocol messages. And there seems to be no proper consensus on how to use it among the different XMPP RFCs -- do we re-use a node name or come up with something different? Or just make it an attribute? Do we namespace it? XMPP works great for what it was designed for though. There are many robust client and server implementations, being able to federate is awesome, and it's pretty easy to extend. But if I were to re-invent it, I would use a binary transport format.
- imaginator 16y agoIf you don't want the pain of setting up ejabberd, Prodosy has http://code.google.com/p/prosody-modules/wiki/mod_websocket http://code.google.com/p/prosody-modules/wiki/mod_websocket module already... And is much nicer to setup.
- benlangfeld 16y agoUnfortunately this is not yet a usable solution. I'd love to see this implementation ported to Prosody though.