→ 드라이버가 사용하게 될 드라이버앱에서는 실시간으로 배달 목록을 업데이트 받아야 하기에 Socket i.o를 사용해야 했다. 클라이언트 측에서 필요한 Socket i.o Packet를 정리해두고자 한다.
💡 드라이버는 출근완료가 되는 순간 소켓에 접속해야 한다
NameSpaces : | /truck |
---|---|
Type : | Room 입장 요청 |
EventName : | enterRoom |
Process : | Driver App → Socket Server |
{
"truckID": "T1"
}
NameSpaces : | /truck |
---|---|
Room : | truckID 값으로 배정된 상태 |
EventName : | orderList |
Type : | 구독 |
Process : | Driver App → Socket Server |
[
{
orderID: '202305101730C00100',
orderedMenu: {
orderList: [
{
drinks: {
Coca: 4.33
},
menuName: '깍둑 등심 스테이크',
quantity: 3,
toppings: {
'Bulgogi 5oz': 1,
Lettuce: 1,
Rice: 1
}
}
]
},
updatedDeliveryContact: '010-0000-0000',
updatedAddress: '860 Meridian Bay Ln, Foster City, CA 94404',
cookingStatus: 0,
how2Get: 'Leave at the door',
isMessOrder: true,
orderedLat: 37.5651985,
orderedLng: 126.8985079,
cookingFinishedTime: '18:30'
} ... // 다수의 주문 리스트 존재
]
NameSpaces : | /truck |
---|---|
EventName : | updateLocation |
Type : | 게시 |
Process : | Driver App → Socket Server (Direct) |
{
"truckID": "T1",
"lng": -122.13487488200116,
"lat": 37.45896200477657
}
💡 트럭은 Socket 서버에 접속해서 Room에 들어가 있을테니 바로 관련 이벤트로 위치를 게시하는 쪽이 좋을 것 같다.
- Driver App → Socket 서버에 연결 후 직접 주제 게시 (람다를 거친 API 요청으로 만들면 너무 빈도수가 높음)
a. 사용자에게 배달완료 됐다고 알려주기
NameSpaces : | /client |
---|---|
Room : | clientID 값으로 배정된 상태 |
EventName : | orderFinish |
Type : | 게시 |
Process : | App Server → Socket Server (API) |
b. 트럭의 주문리스트 갱신시키기
NameSpaces : | /truck |
---|---|
Room : | truckID 값으로 배정된 상태 |
EventName : | orderList |
Type : | 게시 |
Process : | App Server → Socket Server (API) |
💡 드라이버는 퇴근이 되는 순간 소켓 연결을 끊어야한다