Elixir服务器接收客户端消息01

本文介绍了Elixir服务器如何接收客户端消息。首先,客户端通过socket连接到服务器的session,session启动avatar进程来处理消息。其次,服务器使用ranch监听器进行网络通信。接着,详细讨论了session对接收协议的处理,包括start_link/4、init/4和loop/2函数,以及如何避免在gen_server中因调用ranch:accept_ack/1导致的死锁。最后,概述了gen_server的工作原理,如handle_cast和handle_call回调函数。
摘要由CSDN通过智能技术生成

1. 客户端和服务器的连接

客户端通过socket连接服务器的session,session会启动一个对应角色的avatar,每个avatar就是一个进程,avatar接受分析session的消息,调用对应的模块完成数据的修改,avatar将需要反馈的结果传给session,session再传给客户端。

2. 监听器ranch

  • session也是一个监听器,用ranch监听。ranch是一个用于处理套接字的网络库(使用tcp协议)。监听器通过调用:ranch.start_listener/6启动,在此之前启用ranch应用 :ok = :ranch.accept_ack/1
  • :ranch.start_listener/6参数:
    (@config[:listener_name],
    @config[:acceptors],
    @config[:transport_type],
    @config[:transport_options],
    TcpServer.ConnectionWorker,
    [ ])

3. session对接收协议处理:

start_link/4,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值