chore(presence): more fields for disconnected event
This commit is contained in:
parent
8935d28ed4
commit
05b16c601b
|
@ -52,46 +52,50 @@ description() ->
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
on_client_connected(ClientInfo = #{clientid := ClientId}, ConnInfo, Env) ->
|
on_client_connected(ClientInfo = #{clientid := ClientId}, ConnInfo, Env) ->
|
||||||
Presence = connected_presence(ClientInfo, ConnInfo),
|
Presence = common_infos(ClientInfo, ConnInfo),
|
||||||
case emqx_json:safe_encode(Presence) of
|
NPresence = Presence#{
|
||||||
|
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)
|
||||||
|
},
|
||||||
|
case emqx_json:safe_encode(NPresence) of
|
||||||
{ok, Payload} ->
|
{ok, Payload} ->
|
||||||
emqx_broker:safe_publish(
|
emqx_broker:safe_publish(
|
||||||
make_msg(qos(Env), topic(connected, ClientId), Payload));
|
make_msg(qos(Env), topic(connected, ClientId), Payload));
|
||||||
{error, _Reason} ->
|
{error, _Reason} ->
|
||||||
?LOG(error, "Failed to encode 'connected' presence: ~p", [Presence])
|
?LOG(error, "Failed to encode 'connected' presence: ~p", [NPresence])
|
||||||
end.
|
end.
|
||||||
|
|
||||||
on_client_disconnected(_ClientInfo = #{clientid := ClientId, username := Username},
|
on_client_disconnected(ClientInfo = #{clientid := ClientId},
|
||||||
Reason, _ConnInfo = #{disconnected_at := DisconnectedAt}, Env) ->
|
Reason, ConnInfo = #{disconnected_at := DisconnectedAt}, Env) ->
|
||||||
Presence = #{clientid => ClientId,
|
|
||||||
username => Username,
|
Presence = common_infos(ClientInfo, ConnInfo),
|
||||||
|
NPresence = Presence#{
|
||||||
reason => reason(Reason),
|
reason => reason(Reason),
|
||||||
disconnected_at => DisconnectedAt,
|
disconnected_at => DisconnectedAt
|
||||||
ts => erlang:system_time(millisecond)
|
|
||||||
},
|
},
|
||||||
case emqx_json:safe_encode(Presence) of
|
case emqx_json:safe_encode(NPresence) of
|
||||||
{ok, Payload} ->
|
{ok, Payload} ->
|
||||||
emqx_broker:safe_publish(
|
emqx_broker:safe_publish(
|
||||||
make_msg(qos(Env), topic(disconnected, ClientId), Payload));
|
make_msg(qos(Env), topic(disconnected, ClientId), Payload));
|
||||||
{error, _Reason} ->
|
{error, _Reason} ->
|
||||||
?LOG(error, "Failed to encode 'disconnected' presence: ~p", [Presence])
|
?LOG(error, "Failed to encode 'disconnected' presence: ~p", [NPresence])
|
||||||
end.
|
end.
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Helper functions
|
%% Helper functions
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
connected_presence(#{peerhost := PeerHost,
|
common_infos(
|
||||||
sockport := SockPort,
|
_ClientInfo = #{clientid := ClientId,
|
||||||
clientid := ClientId,
|
username := Username,
|
||||||
username := Username
|
peerhost := PeerHost,
|
||||||
|
sockport := SockPort
|
||||||
},
|
},
|
||||||
#{clean_start := CleanStart,
|
_ConnInfo = #{proto_name := ProtoName,
|
||||||
proto_name := ProtoName,
|
proto_ver := ProtoVer
|
||||||
proto_ver := ProtoVer,
|
|
||||||
keepalive := Keepalive,
|
|
||||||
connected_at := ConnectedAt,
|
|
||||||
expiry_interval := ExpiryInterval
|
|
||||||
}) ->
|
}) ->
|
||||||
#{clientid => ClientId,
|
#{clientid => ClientId,
|
||||||
username => Username,
|
username => Username,
|
||||||
|
@ -99,11 +103,6 @@ connected_presence(#{peerhost := PeerHost,
|
||||||
sockport => SockPort,
|
sockport => SockPort,
|
||||||
proto_name => ProtoName,
|
proto_name => ProtoName,
|
||||||
proto_ver => ProtoVer,
|
proto_ver => ProtoVer,
|
||||||
keepalive => Keepalive,
|
|
||||||
connack => 0, %% Deprecated?
|
|
||||||
clean_start => CleanStart,
|
|
||||||
expiry_interval => ExpiryInterval,
|
|
||||||
connected_at => ConnectedAt,
|
|
||||||
ts => erlang:system_time(millisecond)
|
ts => erlang:system_time(millisecond)
|
||||||
}.
|
}.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{application, emqx_modules,
|
{application, emqx_modules,
|
||||||
[{description, "EMQ X Module Management"},
|
[{description, "EMQ X Module Management"},
|
||||||
{vsn, "4.3.2"},
|
{vsn, "4.3.3"},
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{applications, [kernel,stdlib]},
|
{applications, [kernel,stdlib]},
|
||||||
{mod, {emqx_modules_app, []}},
|
{mod, {emqx_modules_app, []}},
|
||||||
|
|
|
@ -1,21 +1,31 @@
|
||||||
%% -*-: erlang -*-
|
%% -*-: erlang -*-
|
||||||
{VSN,
|
{VSN,
|
||||||
[
|
[
|
||||||
|
{"4.3.2", [
|
||||||
|
{load_module, emqx_mod_presence, brutal_purge, soft_purge, []}
|
||||||
|
]},
|
||||||
{"4.3.1", [
|
{"4.3.1", [
|
||||||
|
{load_module, emqx_mod_presence, brutal_purge, soft_purge, []},
|
||||||
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
||||||
]},
|
]},
|
||||||
{"4.3.0", [
|
{"4.3.0", [
|
||||||
{update, emqx_mod_delayed, {advanced, []}},
|
{update, emqx_mod_delayed, {advanced, []}},
|
||||||
|
{load_module, emqx_mod_presence, brutal_purge, soft_purge, []},
|
||||||
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
||||||
]},
|
]},
|
||||||
{<<".*">>, []}
|
{<<".*">>, []}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
{"4.3.2", [
|
||||||
|
{load_module, emqx_mod_presence, brutal_purge, soft_purge, []}
|
||||||
|
]},
|
||||||
{"4.3.1", [
|
{"4.3.1", [
|
||||||
|
{load_module, emqx_mod_presence, brutal_purge, soft_purge, []},
|
||||||
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
||||||
]},
|
]},
|
||||||
{"4.3.0", [
|
{"4.3.0", [
|
||||||
{update, emqx_mod_delayed, {advanced, []}},
|
{update, emqx_mod_delayed, {advanced, []}},
|
||||||
|
{load_module, emqx_mod_presence, brutal_purge, soft_purge, []},
|
||||||
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
{load_module, emqx_mod_api_topic_metrics, brutal_purge, soft_purge, []}
|
||||||
]},
|
]},
|
||||||
{<<".*">>, []}
|
{<<".*">>, []}
|
||||||
|
|
Loading…
Reference in New Issue