Hey Guys,
Did you know that there’s an alternative to Cowboy for Phoenix, called Bandit?
And it recently reached {:bandit, "~> 1.0-pre"}
version!
Here’s my observation:
In Cowboy based phoenix builds, I noticed that there’s a delay before the websocket connection happened.
As you can notice in the gif below. Other pages load within 100ms, however the websocket connection reaches close to 435ms:

That doesn’t happen with Bandit!
All the resources, along with the socket connection happen within 100ms!

Check it out:
7 Likes
I’m already using it in production. It works. The performance is about the same in my use case.
On the plus side, Bandit is built on top of OTP primitives and doesn’t do the annoying silent crashes that Cowboy does.
On the downside, it’s still fairly young, and there are rough edges. Pre-9 version had some breaking bugs, the current (pre-10) version seems okay but some behaviors differ from Cowboy like the lack of interrupting requests when client drops off. We also observed increased memory usage, but these things can be related to one another.
Generally, it looks like it’s the future, and at some point should probably be the default over Cowboy, but you should use it with caution on production (I’m hovering my hand over the switch back to Cowboy just in case for now).
12 Likes
This is the insight I was looking for, thank you.
I’m sticking with Bandit, because I like where its going, and It’s necessary for others to adopt it, so that we can detect those cases where failure happens, and library will improve because of that.
I see only 5 issues on that repo as of now.
6 Likes
I’m here if anyone has any specific blocking issues for adoption at your shops!
19 Likes