ExProto 无法获取具体客户信息

描述你需要的功能

希望ExProto ConnectionHandler 服务的方法能返回clientid、username等参数; 现在OnSocketClosed、OnReceivedBytes、OnTimerTimeout 都是返回 EmptySuccess,而ConnInfo是Exproto与emqx连接的对象 (不像ExHook中的ConnInfo 包含了clientid、username等),在ExProto中无法确定具体的客户端;
所以在ExProto中无法确定是那个客户连接、发送数据、关闭。

为什么你需要这个功能

在非长连接业务中由ExProto记录客户端状态,在需要的时候才调用Authenticate、Publish、Subscribe等方法。

ExProto 是无法知道 Client ID 和 Usrename Password 等信息的;这都是需要你的 gRPC 服务通过客户端的报文来解析的

我在 OnReceivedBytes 方法中通过接收的报文解析出了 Clientid,Username。并通过 Authenticate 成功认证了,并为这个客户端订阅了主题。但是在这个客户端断开后触发了 OnSocketClosed 事件,我并不能知道是那一个客户端断开。
是否能在OnSocketClosed事件中返回我通过Authenticate 认证时的Clientid、Username呢?或者是通返回一个这个客户端的一个唯一的标识?

可以通过 OnSocketClosed 事件中携带的 conn 字段,来进行判断

message SocketClosedRequest {

  string conn = 1;

  string reason = 2;
}

该字段在对每个 Socket 连接来说都是唯一的

非常感谢,第个Socket的conn字段确实是唯一的,之前看每个连接的conn前后一样,没注意到。