토픽·서비스·액션, 그리고 파라미터
“거북이 한 마리 더 만들어 줘”도 방송으로 할까?
토픽
계속 흘려보내는 방송
토픽(topic)은 보내는 쪽이 메시지를 올리면, 그 이름을 구독한 노드가 모두 받습니다. 답장은 없습니다. 센서 값이나 속도 명령처럼 끊임없이 흐르는 데이터에 씁니다(3강).
/listener는 설명을 위해 붙인 노드 이름입니다.
서비스
묻고 한 번 답받기
서비스(service)는 묻고 답하는 대화입니다. 클라이언트가 요청을 보내면 서버가 일을 하고 응답을 한 번 돌려줍니다. turtlesim의 /spawn에 위치를 보내면 거북이를 하나 더 만들고 그 이름을 알려 줍니다(7강).
액션
오래 걸리면 액션으로
액션(action)은 목표를 주고, 일하는 동안 중간 보고를 받고, 끝나면 결과를 받는 대화입니다. 도중에 취소할 수도 있습니다. 거북이를 정한 각도까지 돌리는 /turtle1/rotate_absolute가 액션입니다(9강).
고르기
일의 모양에 따라 고릅니다
계속 흐르면 토픽, 금방 끝나는 질문이면 서비스, 시간이 걸리고 진행 상황이 궁금하면 액션입니다. 15강에서 로봇을 목표까지 보내는 일도 액션입니다.
파라미터
파라미터는 대화가 아니라 설정값
파라미터(parameter)는 통신 방법이 아니라 노드가 가진 설정값입니다. turtlesim의 바탕색처럼 이름과 값으로 이루어지고, 노드마다 따로 가지며, 다시 빌드하지 않고 바꿀 수 있습니다(8강).
그래서 제목이 "세 가지 대화법과 설정값"입니다. 대화법은 셋, 파라미터는 따로입니다.
한 노드에
turtlesim 하나에 넷 다 있습니다
노드 하나가 토픽을 듣고, 서비스를 받고, 액션을 처리하고, 파라미터를 가질 수 있습니다. 2강에서 띄울 turtlesim이 이 넷을 모두 갖고 있어 연습 상대로 딱 좋습니다.
다음 편