<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">And if you need some content-management features (templates, multi-lingual, timezones, etc) then you can also use Zotonic :)<div class=""><br class=""></div><div class=""><a href="http://channel.me" class="">http://channel.me</a> uses it as the backend for their co-browsing solution.</div><div class="">They place an iframe for their communication on the client’s website, this solves many (browser-)security issues.</div><div class=""><br class=""></div><div class="">Zotonic’s client/server transports are battle tested with weird phones, corporate networks, and ancient Internet Explorer browsers.</div><div class=""><br class=""></div><div class="">Some features of Zotonic transports:</div><div class=""><br class=""></div><div class=""> * Quick determination to use Websockets or Comet</div><div class=""> * Fallback to Comet if Websockets is failing</div><div class=""> * AJAX or Websocket postbacks to the server</div><div class=""> * Different kinds of payloads, with their own delegate handlers</div><div class=""> * You can add your own handlers</div><div class=""> * Active ping/pong to test the connection and check session status</div><div class=""> * Pubsub using MQTT-topic trees, in the browser and on the server</div><div class=""><br class=""></div><div class="">The MQTT pubsub enables publishing a message via MQTT to the server and receiving it in browsers.</div><div class=""><br class=""></div><div class="">- Marc</div><div class=""><br class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 29 jan. 2016, at 02:11, José Valim <<a href="mailto:jose.valim@plataformatec.com.br" class="">jose.valim@plataformatec.com.br</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Someone mentioned on Twitter there is N2O as well: <a href="https://github.com/synrc/n2o" class="">https://github.com/synrc/n2o</a><div class=""><br class=""></div><div class="">It is in Erlang and it seems to be more focused on WebSockets instead of a web framework like Phoenix. It may better suit your needs. :)<br class=""></div></div><div class="gmail_extra"><br clear="all" class=""><div class=""><div class="gmail_signature"><div dir="ltr" class=""><div class=""><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><span style="font-size:13px" class=""><div class=""><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse" class=""><b class="">José Valim</b></span></div><div class=""><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse" class=""><div class=""><span style="font-family:verdana,sans-serif;font-size:x-small" class=""><a href="http://www.plataformatec.com.br/" style="color:rgb(42,93,176)" target="_blank" class="">www.plataformatec.com.br</a></span></div><div class=""><span style="font-family:verdana,sans-serif;font-size:x-small" class="">Skype: jv.ptec</span></div><div class=""><span style="font-family:verdana,sans-serif;font-size:x-small" class="">Founder and Director of R&D</span></div></span></div></span></div></div></div></div></div>
<br class=""><div class="gmail_quote">On Thu, Jan 28, 2016 at 3:51 PM, José Valim <span dir="ltr" class=""><<a href="mailto:jose.valim@plataformatec.com.br" target="_blank" class="">jose.valim@plataformatec.com.br</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Hi Lyn,<div class=""><br class=""></div><div class="">I usually avoid posting Elixir related solutions in here but, if Elixir is an option, you should take a look at Phoenix: <a href="http://www.phoenixframework.org/" target="_blank" class="">http://www.phoenixframework.org/</a><br class=""><div class="gmail_extra"><br class=""></div><div class="gmail_extra">Phoenix is a framework running on top of Cowboy and has a feature called channels that seems to provide what you are looking for:</div><div class="gmail_extra"><br class=""></div><div class="gmail_extra">* Handle websockets and fallback to long-polling when websockets is not available</div><div class="gmail_extra">* Support cross-origin headers in both websockets and long-polling transports</div><div class="gmail_extra">* Good browser compatibility (our long-polling implementation supports way back to IE8)</div><div class="gmail_extra">* Ability to "force" SSL, allowing only https/ws connections</div><div class="gmail_extra"><br class=""></div><div class="gmail_extra">Channels run on top of a pubsub system, which allows anywhere in your application to broadcast messages to all connected clients on a given topic. We have recently written on how we got 2 million websocket connections on a single machine (at an arrival rate of 20k/s iirc).</div><div class="gmail_extra"><br class=""></div><div class="gmail_extra">Finally, the pubsub system is distributed. So if you want to deploy over multiple machines, we will use Distributed Erlang. No need for Redis. We are also working on a Phoenix Presence feature, using CRDTs alongside Distributed Erlang, so if you need presence support in the future, it will be handy too.</div><div class="gmail_extra"><br class=""></div><div class="gmail_extra">If you are interested in more information, you can try the <a href="http://www.phoenixframework.org/docs/overview" target="_blank" class="">Phoenix guides</a>, <a href="https://groups.google.com/forum/#!forum/phoenix-talk" target="_blank" class="">the mailing list</a> or join us on #elixir-lang on IRC Freenode.</div><div class="gmail_extra"><span class="HOEnZb"><font color="#888888" class=""><div class=""><div class=""><div dir="ltr" class=""><div class=""><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><span style="font-size:13px" class=""><div class=""><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse" class=""><b class="">José Valim</b></span></div><div class=""><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse" class=""><div class=""><span style="font-family:verdana,sans-serif;font-size:x-small" class=""><a href="http://www.plataformatec.com.br/" style="color:rgb(42,93,176)" target="_blank" class="">www.plataformatec.com.br</a></span></div><div class=""><span style="font-family:verdana,sans-serif;font-size:x-small" class="">Skype: jv.ptec</span></div><div class=""><span style="font-family:verdana,sans-serif;font-size:x-small" class="">Founder and Director of R&D</span></div></span></div></span></div></div></div></div></div></font></span><div class=""><div class="h5">
<br class=""><div class="gmail_quote">On Thu, Jan 28, 2016 at 2:00 AM, Lyn Headley <span dir="ltr" class=""><<a href="mailto:lheadley@kcptech.com" target="_blank" class="">lheadley@kcptech.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I am developing a web app that will use client-side js code that I am<br class="">
writing to issue cross-origin requests from a domain not under my<br class="">
control to a web server under my control; and am evaluating whether to<br class="">
use websockets, long-polling, or another method. I need to consider<br class="">
things like browser compatibility (the more browsers supported, the<br class="">
better) and security (requests / packets must be secure, so https or<br class="">
wss I think). My ideal solution will support low latency messaging and<br class="">
high scalability, but will also support most browsers, and be easy to<br class="">
install and configure. One tactic for example would be to prefer<br class="">
websockets, but fall back to long-polling, which is what I understand<br class="">
<a href="http://socket.io/" rel="noreferrer" target="_blank" class="">socket.io</a> does.<br class="">
<br class="">
I would be interested to hear any experiences you might have in this<br class="">
domain, and any recommendations you might have for erlang libraries,<br class="">
servers, etc. Has anyone done this? What stack did you deploy? What<br class="">
were the issues you encountered?<br class="">
<br class="">
I have a slight bias in favor of yaws, because I have already gotten<br class="">
it running, but am open to other web servers if it turns out to be too<br class="">
hard to make yaws do what I want.<br class="">
<br class="">
Thanks,<br class="">
Lyn<br class="">
_______________________________________________<br class="">
erlang-questions mailing list<br class="">
<a href="mailto:erlang-questions@erlang.org" target="_blank" class="">erlang-questions@erlang.org</a><br class="">
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank" class="">http://erlang.org/mailman/listinfo/erlang-questions</a><br class="">
</blockquote></div><br class=""></div></div></div></div></div>
</blockquote></div><br class=""></div>
_______________________________________________<br class="">erlang-questions mailing list<br class=""><a href="mailto:erlang-questions@erlang.org" class="">erlang-questions@erlang.org</a><br class="">http://erlang.org/mailman/listinfo/erlang-questions<br class=""></div></blockquote></div><br class=""></div></div></body></html>