sockerl

Advanced Erlang socket library for TCP protocols and provides fast, useful and simple API for implementing server, client and connection pool.


Keywords
elixir, elixir-apps, elixir-library, erlang, erlang-developement, erlang-libraries, erlang-library, erlang-otp, otp, socket, socket-communication, socket-programming, socket-server
License
Other

Documentation

sockerl travis test status Hex version

SockErl

Overview

Sockerl is an advanced Erlang/Elixir socket library for TCP protocols and provides fast, useful and easy-to-use API for implementing server, clients and connection pools.

Features

  • In server, client and client pool implementation every connection has its own process and Sockerl provides useful and simple API for accessing them and sending data through them or sending Erlang message to them, closing them etc.

  • Every connection process can handle generic calls (requests that have made using gen_server:call/2-3 or gen:call/3-4), generic casts (requests that have made using gen_server:cast/2), generic events (messages in form of {'$gen_event', Event}), disconnecting (when other side closes connection), Erlang system messages, etc.

  • Acceptors and Connectors have been written as Special Erlang process and they are faster than gen_server, gen_fsm, etc.

  • Blocking and non-blocking sockets are supported.

  • SSL is supported too.

  • Connects to multiple addresses and has multiple connections to every address in client connection pools.

  • Add new Client(s) to existing pool.

  • Clean and human-understandable error outputs.

  • Accepts standard OTP sys debug options for Acceptors and Connections for generating clean debug output.

  • Simple API for controlling crash of connection processes.

All features not listed here.


Download source

Git
~ $ git clone --branch 17.9.3 https://github.com/Pouriya-Jahanbakhsh/sockerl.git

Download compiled

For compiled source and its dependencies download lib.tar.gz from Releases

Use as dependency

Rebar3

Put this in deps in rebar.config:

{sockerl, "17.9.3"}
Rebar

Put this in deps in rebar.config:

{sockerl, ".*", {git, "https://github.com/Pouriya-Jahanbakhsh/sockerl.git", {tag, "17.9.3"}}}
Mix

Put this in deps in mix.exs:

{:sockerl, "~> 17.9.3"}

erlang.mk

dep_sockerl = hex 17.9.3

Documentation

See Wiki

License

BSD 3-Clause

Links

GitHub
This documentation is available in http://docs.codefather.org/sockerl