docs: elaborate proto specification details in GRPC.md section 3
This commit is contained in:
@@ -56,18 +56,21 @@ syntax = "proto3";
|
||||
|
||||
option go_package = "./protoapi/;protoapi";
|
||||
|
||||
// 1. 기기들이 통신할 서비스 창구(고객센터) 정의
|
||||
service IoTService {
|
||||
rpc GetDate (RequestDateTime) returns (DateTime);
|
||||
rpc UpdateSensingData (SensingData) returns (SensingResponse);
|
||||
rpc GetRandomPass (RequestPass) returns (RandomPass);
|
||||
}
|
||||
|
||||
// 2. 기기가 센서 값을 실어 보낼 포장 상자 (요청 데이터)
|
||||
message SensingData {
|
||||
string DeviceId = 1;
|
||||
double Temperature = 2;
|
||||
double Humidity = 3;
|
||||
}
|
||||
|
||||
// 3. 서버가 처리 결과를 알려줄 영수증 (응답 데이터)
|
||||
message SensingResponse {
|
||||
bool Success = 1;
|
||||
string Message = 2;
|
||||
@@ -91,6 +94,23 @@ message RandomPass {
|
||||
}
|
||||
```
|
||||
|
||||
### 💡 명세서의 핵심 규칙 쉽게 읽기
|
||||
|
||||
처음 명세서를 접하는 후배 개발자들을 위해 각 기호와 키워드가 뜻하는 바를 친절하게 설명해 줍니다:
|
||||
|
||||
1. **`service IoTService` (통합 소통 창구)**:
|
||||
* 기기(클라이언트)가 서버에게 요청할 수 있는 **기능 리스트**를 모아둔 일종의 '메뉴판'입니다.
|
||||
* 그 안의 `rpc`는 **"원격에 있는 서버의 함수를 내 기기에 있는 함수처럼 직접 두드려 깨운다"**는 뜻의 약속(Remote Procedure Call)입니다.
|
||||
* `rpc GetDate (질문 상자) returns (답변 상자)`: 서버 시계 물어보기
|
||||
* `rpc UpdateSensingData (질문 상자) returns (답변 상자)`: 센서 정보 보고하기
|
||||
|
||||
2. **`message SensingData` (포장 상자 구조)**:
|
||||
* 기기가 서버에 보내는 정보 꾸러미입니다. 그 속에 `string DeviceId`, `double Temperature`, `double Humidity`라는 세 종류의 알맹이를 고이 담고 있습니다.
|
||||
|
||||
3. **`= 1`, `= 2` (기본값 대입이 아닌 "고유 번호표" / 태그)**:
|
||||
* 초심자가 가장 많이 헷갈려 하는 부분입니다! 이는 변수에 `1`이나 `2`라는 기본값을 집어넣는 수학적인 대입 연산자가 **아닙니다**.
|
||||
* 기기와 서버가 통신 데이터를 매우 가볍고 압축된 이진 데이터(0과 1)로 빠르게 주고받기 위해, **"첫 번째 자리에 있는 데이터는 DeviceId이고, 두 번째 자리에 있는 데이터는 Temperature다"** 라고 컴퓨터끼리 정한 **순서 번호표(Tag Number)**입니다. 이 번호표는 이미 통신 중인 이전 버전의 기기들과 호환성을 유지해야 하므로, 명세서 개정 시 한 번 지정한 번호를 마음대로 바꾸거나 중복 사용해서는 안 됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 4. 말귀를 알아듣는 코드 변환기 준비 (Go Stub 컴파일 및 도구 체인)
|
||||
|
||||
Reference in New Issue
Block a user