diff --git a/apps/iot/src/iot_app.erl b/apps/iot/src/iot_app.erl index 22af7b9..10beffa 100644 --- a/apps/iot/src/iot_app.erl +++ b/apps/iot/src/iot_app.erl @@ -92,7 +92,7 @@ start_udp_server() -> {ok, Props} = application:get_env(iot, udp_server), Port = proplists:get_value(port, Props), UdpOpts = [{udp_options, [binary, {reuseaddr, true}]}], - {ok, _} = esockd:open_udp(iot_udp_server, Port, UdpOpts, {iot_udp_server, start_link, []}), + {ok, _} = esockd:open_udp(iot_udp_server, Port, UdpOpts, {iot_udp_handler, start_link, []}), lager:debug("[iot_app] the udp server start at: ~p", [Port]). %% 启动内存数据库 diff --git a/apps/iot/src/iot_udp_handler.erl b/apps/iot/src/iot_udp_handler.erl new file mode 100644 index 0000000..15bbf49 --- /dev/null +++ b/apps/iot/src/iot_udp_handler.erl @@ -0,0 +1,27 @@ +%%%------------------------------------------------------------------- +%%% @author aresei +%%% @copyright (C) 2023, +%%% @doc +%%% +%%% @end +%%% Created : 31. 8月 2023 13:48 +%%%------------------------------------------------------------------- +-module(iot_udp_handler). +-author("aresei"). + +%% API +-export([start_link/2, loop/2]). + +start_link(Transport, Peer) -> + {ok, spawn_link(?MODULE, loop, [Transport, Peer])}. + +loop(Transport = {udp, Server, _Sock}, Peer) -> + receive + {datagram, Server, <>} -> + lager:debug("[iot_udp_server] peer: ~p, get heartbeat of: ~p", [esockd:format(Peer), HostUUID]), + Pid = iot_host:get_pid(HostUUID), + iot_host:heartbeat(Pid), + loop(Transport, Peer); + {datagram, Server, _} -> + exit(normal) + end. \ No newline at end of file