mochi-mqtt / server

The fully compliant, embeddable high-performance Go MQTT v5 server for IoT, smarthome, and pubsub
MIT License
1.29k stars 222 forks source link

遍历Clients时如何判断当前Client是否为Disconected状态 #366

Closed liwei0705 closed 9 months ago

liwei0705 commented 9 months ago

我看到有disconected字段记录断开的时间戳,但这个变量是私有的无法从外部读取。

是否代码中有我还没有注意到的地方?

werbenhu commented 9 months ago

@liwei0705 你说的是Client.State.disconnected吗?这个字段是用来保存断开连接的时间,用这个来判断是否断开连接可能不太合适。建议你根据Clinet.Net.Conn来判断,先判断其为不为空,如果不为空,则判断下这个net.Conn是否是closed.

liwei0705 commented 9 months ago

@liwei0705 你说的是Client.State.disconnected吗?这个字段是用来保存断开连接的时间,用这个来判断是否断开连接可能不太合适。建议你根据Clinet.Net.Conn来判断,先判断其为不为空,如果不为空,则判断下这个net.Conn是否是closed.

Thanks. Conn的判定也比较复杂,所以我改用OnDisconnect Hook + 自定义Map处理了...

werbenhu commented 9 months ago

这样更好,尽量让hook和server不要耦合在一起。