smppex vs oserl
chemeris opened this issue · 2 comments
Just wondering - why a completely new library, what is the benefit comparing to existing libs like oserl?
We're looking for a good SMPP library in Erlang/Elixir, so I'm looking at available options.
Hello!
In our company we use Erlang widely, and when we started working with SMPP oserl
helped us a lot. By now we have been working with SMPP for several years and had some serious issues with oserl
.
oserl
is dead. Nobody contributes to it for many years.- It has several critical bugs including session deadlocks. The most critical core bugs are fixed in our fork https://github.com/funbox/oserl since they are still not merged into "original" github repo https://github.com/iamaleksey/oserl/pulls. Our repo also contains branches with support of newer Erlang versions.
- It has "hardcoded" SMPP 5.0 support while most SMSC-s we work with support only SMPP 3.4, SMPP 5.0 isn't popular.
oserl
has some critical architectural issues, mostly concerning MC functionality. All sessions opened by MC are handled by a single gen_server, this often becomes a bottleneck and makes different sessions dependent. Also,oserl
sessions have weird RPS control mechanism which is very CPU consuming.
SMPPEX
is intended to be a full featured replacement for oserl
in Elixir
projects. It's core feature is simplicity, and by simplicity I mean both code simplicity and simplicity of use.
- The library does not have much TCP handling or session management functionality, since it is based on
ranch
. Consequently SMPP sessions are completely parallel. - SMPP session is symmetric and is implemented as
ranch_protocol
behaviour. - The library includes an easy and ready to use SMPP client (
SMPP.ESME.Sync
) which has capabilities of synchronous SMS sending and do not require implementing ESME behavior. There is also an SMPP testing tool smppsend(https://github.com/savonarola/smppsend) based on this client.
The most serious disadvantage of SMPPEX is the lack of documentation, but I'm working on it right now (just after I have implemented the main functionality and covered it with tests).
Thank you for the explanation. We'll give smppex a shot here as well.
Btw, I looked at the code close over the weekend - It's quite nicely designed.