Wow! How many words did I just use up there? Too many. But they all have meanings. BOSH is the latest-greatest method of using a stateless protocol, like HTTP to keep a connection open to a stateful protocol, like XMPP. Jack Moffitt has written the most useful information on the web on this subject. But even with a complete description of how to pull off this "hack" there's always something that can sneak up on me. Here's my architecture right now.
Client (strophe) --> Nginx (rr balancer)--> ejabberd cluster (mod_http_bind)Simple enough, and pretty much documented by Mr Moffitt. BUT WAIT! After deploying this to staging, user testing produced some very strange results. About 1 in 5 connectionswould be one way. I'd see you log in but you couldn't see my words. Bizarre, and usually the result of an inconsistant state. After a day of reading, drawing and poking around I discovered what I believe to be the source. The Mnesia database table for http_bind. I forgot to configure the database table to be shared across all nodes in the cluster. So I believe that each node had their own database for http_bind connections, which would explain the inconsistant yet unpredictable state.