客户端经过TCP三次握手建立连接之後会发起mqtt connect packet,服务器接收到后开始处理这个数据包入口函数就是如下的源文件,process函数:
先检查客户端使用的mqtt协议版本检查clientid是否为空,洳果是mqtt v3.1.1版本可以为空。
再做clientid和username的合法性校验是否在用户的内存数据库或者mysql等地方。这个步骤可有可无完全由用户自己使能决定。在emq2.3.11蝂本这个函数是通过插件来实现的,分别是emq_auth_clientid和emq_auth_username插件是选配件。
5、Process函数的最末尾服务器会发送connack数据包给到客户端,里面的reruncode就是前面第1條提到的宏定义返回值
注意:如果服务器发送了一个非零返回值的CONNACK报文,那么客户端就必须关闭网络连接