1. Ranch 是一个TCP Socket Acceptor 池, 它为我们封装了accept TCP连接的过程, 这样我们仅需要少量的代码就能够使用已经建立好的TCP连接。它是易用和低延迟 的, 很容易把它作为一个完整的应用,或者集成到你子集的应用中去。
2. Ranch提供模块化的设计, 允许为特定的Socket监听器制定不同的传输层和协议。, 监听器在一个端口上监听和管理连接, 并提供接口来限制并发连接的数量, 连 接被分类放入池中, 每个池有不同的上限限制。
3. 监听器
监听器的职责是在指定的端口上监听连接的到来, 它管理一池的接收器进程, 接收器在一个循环内接收连接, 一旦接收到一个连接, 它就启动一个新的进程来执行 协议处理器的代码, 所有的Socket编程都是从协议处理器代码开始的。
4. 启动和停止
Ranch本身并不做具体的事情, 它只是帮助应用开发者监听并接收连接, 启动一个监听器需要以下的设置:
a) 监听器的名字
b) 接收器的数量
c) 传输层处理器以及相关选项(tcp, ssl).
d) 协议层处理器以及相关选项
5. 启动例子
ok = application:start(ranch).
{ok, _} =
ranch:start_listener
(tcp_echo, 100,
ranch_tcp, [{port, 5555}],
echo_protocol, []
).