feat(event-topic): Add more fields to disconnected event payload

This commit is contained in:
Turtle 2021-07-30 10:49:47 +08:00 committed by turtleDeng
parent d6c375ab5b
commit ebe31c79d4
2 changed files with 42 additions and 17 deletions

View File

@ -88,16 +88,23 @@ disable() ->
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
on_client_connected(ClientInfo, ConnInfo) -> on_client_connected(ClientInfo, ConnInfo) ->
Payload = connected_payload(ClientInfo, ConnInfo), Payload0 = common_infos(ClientInfo, ConnInfo),
Payload = Payload0#{
connack => 0, %% XXX: connack will be removed in 5.0
keepalive => maps:get(keepalive, ConnInfo, 0),
clean_start => maps:get(clean_start, ConnInfo, true),
expiry_interval => maps:get(expiry_interval, ConnInfo, 0),
connected_at => maps:get(connected_at, ConnInfo)
},
publish_event_msg(<<"$event/client_connected">>, Payload). publish_event_msg(<<"$event/client_connected">>, Payload).
on_client_disconnected(_ClientInfo = #{clientid := ClientId, username := Username}, on_client_disconnected(ClientInfo,
Reason, _ConnInfo = #{disconnected_at := DisconnectedAt}) -> Reason, ConnInfo = #{disconnected_at := DisconnectedAt}) ->
Payload = #{clientid => ClientId,
username => Username, Payload0 = common_infos(ClientInfo, ConnInfo),
Payload = Payload0#{
reason => reason(Reason), reason => reason(Reason),
disconnected_at => DisconnectedAt, disconnected_at => DisconnectedAt
ts => erlang:system_time(millisecond)
}, },
publish_event_msg(<<"$event/client_disconnected">>, Payload). publish_event_msg(<<"$event/client_disconnected">>, Payload).
@ -207,6 +214,24 @@ connected_payload(#{peerhost := PeerHost,
ts => erlang:system_time(millisecond) ts => erlang:system_time(millisecond)
}. }.
common_infos(
_ClientInfo = #{clientid := ClientId,
username := Username,
peerhost := PeerHost,
sockport := SockPort
},
_ConnInfo = #{proto_name := ProtoName,
proto_ver := ProtoVer
}) ->
#{clientid => ClientId,
username => Username,
ipaddress => ntoa(PeerHost),
sockport => SockPort,
proto_name => ProtoName,
proto_ver => ProtoVer,
ts => erlang:system_time(millisecond)
}.
make_msg(Topic, Payload) -> make_msg(Topic, Payload) ->
emqx_message:set_flag( emqx_message:set_flag(
sys, emqx_message:make( sys, emqx_message:make(