How discourse stays online (Message Bus, Faye, Long Polling)

Yeah, the whole backend is powered by message_bus. The android/ios client long-polls. Not sure if this is the best use of message_bus, but It works w/o the added complexity of web sockets. The major win is that it fits in our existing rails stack. The only disadvantage i’ve come across so far is that I can’t find an elegant way to support the typing indicator.

http://www.eggie5.com/58-real-time-messenging-w-ruby-ios-android

6 « J'aime »

@sam I see this works with Thin. What about Unicorn, I’ve read that Thin is excellent (best supported) with Long-Polling, is this why you only support Thin when using Long-Polling with your message_bus gem?

Please correct me if I’m wrong but looking at the code Long-Polling seems to be enabled if Thin is running?

1 « J'aime »

It works fine with unicorn, in fact we host all our sites on unicorn.

unicorn, passenger and puma all support rack hijack. This means message_bus can pull sockets out of the normal lifecycle and release the connections back to unicorn while keeping the socket open.

1 « J'aime »

That’s great to know. Thank you. Will read up on rack hijack.

1 « J'aime »

@sam D’après ce que j’ai compris en lisant le README et ce fil de discussion, message_bus semble être un système de notification pur (quelque chose comme une alternative à Pusher).

Ai-je raison de dire qu’il n’est pas conçu pour implémenter l’événement sourcing dans des systèmes distribués ?

Tous les exemples ici sont plutôt liés à la reprise de messages à court terme, mais il n’est pas possible de restaurer l’ancien état de l’application à partir du flux d’événements, en raison du mécanisme de troncature. Y a-t-il quelque chose que j’ai manqué ?

2 « J'aime »

Techniquement, vous pourriez augmenter la rétention et utiliser PG comme backend. Cela dit, conserver un journal des transactions indéfiniment a certainement un coût. Reconstruire une base de données à partir de 10 ans de transactions, bien que faisable, n’est probablement pas quelque chose que vous feriez.

4 « J'aime »