<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>I just wanted to second the Phoenix suggestion as someone who isn't even an Elixir user, so <span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size">José doesn't feel bad suggesting it here :)</span></span></span><br></div>
<div> </div>
<div><span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size">Unless you are really just being an HTTP API on top of something, in which case webmachine is great but if you want websockets you'll have to use something else like elli or cowboy directly, I always suggest going with Phoenix to anyone who asks.</span></span></span><br></div>
<div> </div>
<div><span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size">Of course, if you can move your needs even higher up you could go with Zotonic.</span></span></span><br></div>
<div> </div>
<div><span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size">Not only is the momentum with Phoenix but I've never felt Erlang the language itself is able to provide the abstractions necessary for building webapps efficiently.</span></span></span><br></div>
<div> </div>
<div id="sig19496053"><div class="signature">--<br></div>
<div class="signature">Tristan Sloughter<br></div>
<div class="signature">t@crashfast.com<br></div>
<div class="signature"> </div>
</div>
<div> </div>
<div> </div>
<div>On Thu, Jan 28, 2016, at 08:51 AM, José Valim wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div>Hi Lyn,<br></div>
<div> </div>
<div><div>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/">http://www.phoenixframework.org/</a><br></div>
<div> </div>
<div>Phoenix is a framework running on top of Cowboy and has a feature called channels that seems to provide what you are looking for:<br></div>
<div> </div>
<div>* Handle websockets and fallback to long-polling when websockets is not available<br></div>
<div>* Support cross-origin headers in both websockets and long-polling transports<br></div>
<div>* Good browser compatibility (our long-polling implementation supports way back to IE8)<br></div>
<div>* Ability to "force" SSL, allowing only https/ws connections<br></div>
<div> </div>
<div>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).<br></div>
<div> </div>
<div>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.<br></div>
<div> </div>
<div>If you are interested in more information, you can try the <a href="http://www.phoenixframework.org/docs/overview">Phoenix guides</a>, <a href="https://groups.google.com/forum/#!forum/phoenix-talk">the mailing list</a> or join us on #elixir-lang on IRC Freenode.<br></div>
<div><div><div><div dir="ltr"><div><div> </div>
<div> </div>
<div><div> </div>
<div><span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size"><b>José Valim</b></span></span></span><br></div>
<div><div> </div>
<div><span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size"><span style="font-family:verdana,sans-serif" class="font"><span style="font-size:x-small" class="size"><a style="color:rgb(42, 93, 176);" href="http://www.plataformatec.com.br/">www.plataformatec.com.br</a></span></span></span></span></span><br></div>
<div><span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size"><span style="font-family:verdana,sans-serif" class="font"><span style="font-size:x-small" class="size">Skype: jv.ptec</span></span></span></span></span><br></div>
<div><span style="font-size:13px" class="size"><span style="font-family:arial,sans-serif" class="font"><span style="font-size:13px" class="size"><span style="font-family:verdana,sans-serif" class="font"><span style="font-size:x-small" class="size">Founder and Director of R&D</span></span></span></span></span><br></div>
<div> </div>
</div>
<div> </div>
</div>
</div>
</div>
</div>
</div>
<div> </div>
<div><div>On Thu, Jan 28, 2016 at 2:00 AM, Lyn Headley <span dir="ltr"><<a href="mailto:lheadley@kcptech.com">lheadley@kcptech.com</a>></span> wrote:<br></div>
<blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex;"><div>I am developing a web app that will use client-side js code that I am<br></div>
<div>
writing to issue cross-origin requests from a domain not under my<br></div>
<div>
control to a web server under my control; and am evaluating whether to<br></div>
<div>
use websockets, long-polling, or another method. I need to consider<br></div>
<div>
things like browser compatibility (the more browsers supported, the<br></div>
<div>
better) and security (requests / packets must be secure, so https or<br></div>
<div>
wss I think). My ideal solution will support low latency messaging and<br></div>
<div>
high scalability, but will also support most browsers, and be easy to<br></div>
<div>
install and configure. One tactic for example would be to prefer<br></div>
<div>
websockets, but fall back to long-polling, which is what I understand<br></div>
<div> <a href="http://socket.io">socket.io</a> does.<br></div>
<div> </div>
<div>
I would be interested to hear any experiences you might have in this<br></div>
<div>
domain, and any recommendations you might have for erlang libraries,<br></div>
<div>
servers, etc. Has anyone done this? What stack did you deploy? What<br></div>
<div>
were the issues you encountered?<br></div>
<div> </div>
<div>
I have a slight bias in favor of yaws, because I have already gotten<br></div>
<div>
it running, but am open to other web servers if it turns out to be too<br></div>
<div>
hard to make yaws do what I want.<br></div>
<div> </div>
<div>
Thanks,<br></div>
<div>
Lyn<br></div>
<div>
_______________________________________________<br></div>
<div>
erlang-questions mailing list<br></div>
<div> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br></div>
<div> <a href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a><br></div>
</blockquote></div>
</div>
</div>
</div>
<div><u>_______________________________________________</u><br></div>
<div>erlang-questions mailing list<br></div>
<div><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br></div>
<div><a href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a><br></div>
</blockquote><div> </div>
</body>
</html>