> For the complete documentation index, see [llms.txt](https://violetxf.gitbook.io/messengerbot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://violetxf.gitbook.io/messengerbot/tips/socket-communication.md).

# 소켓 통신

소켓 통신을 통해 외부 기기에서 메신저봇에 접근할 수 있습니다.

[예제 라이브러리](https://github.com/VioletXF/MessengerBotDebugBridge)를 참고하면서 읽는 것을 권장합니다.

## PC -> 메신저봇  <a href="#pc-to-msgbot" id="pc-to-msgbot"></a>

모든 요청은 JSON의 형태로, 한줄로 제공하여야 합니다. 이는 메신저봇이 readLine을 통해 요청을 처리하기 때문입니다.

| 용도           | 요청 방법                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 디버그룸에 메시지 전송 | <p>{</p><p>  "name": "debugRoom",</p><p>  "data":{<br>    "botName": "봇 이름", <br>    "authorName": "전송자", <br>    "roomName": "방 이름", <br>    "isGroupChat": true, <br>    "packageName": "com.kakao.talk", <br>    "message": "메시지 내용"<br>  }<br>}</p><p>botName: 봇의 이름입니다.</p><p>authorName: 봇에게 전달될 메시지 전송자의 이름입니다.</p><p>roomName: 봇에게 전달될 방의 이름입니다.</p><p>isGroupChat: 그룹챗이면 true, 아니면 false입니다.</p><p>packageName: 봇에게 전달될 패키지명입니다.</p><p>message: 봇에게 전달될 메시지 내용입니다.</p> |

### 요청 예시 <a href="#pc-to-msgbot-example" id="pc-to-msgbot-example"></a>

```javascript
{"name":"debugRoom","data":{"botName":"MyBot","authorName":"홍길동","roomName":"채팅방","isGroupChat":false,"packageName":"com.kakao.talk","message":"테스트입니다."}}
```

## 메신저봇 -> PC <a href="#msgbot-to-pc" id="msgbot-to-pc"></a>

모든 요청은 JSON의 형태로, 한줄로 제공됩니다.

| 상황        | 내용                                                                                                                                                                                                                                                                                                                                                                                                |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 디버그룸 업데이트 | <p>{</p><p>  "name": "debugRoom",</p><p>  "data": {<br>    "botName": "봇 이름", <br>    "authorName": "전송자", <br>    "roomName": "방 이름", <br>    "message": "메시지 내용",<br>    "isBot": true</p><p>  }</p><p>}</p><p>botName: 봇의 이름입니다.</p><p>authorName: 메시지 전송자의 이름입니다.</p><p>roomName: 메시지가 도착 방의 이름입니다.</p><p>message: 봇에게 전달될 메시지 내용입니다.</p><p>isBot: 메시지 전송자가 봇일 경우 true, 사용자일 경우 false입니다.</p> |

## ADB를 통해 연결하기 <a href="#connect-via-adb" id="connect-via-adb"></a>

만약 USB 디버깅이 활성화되어 있지 않다면, [이 문서](https://developer.android.com/studio/debug/dev-options)를 참고하여 개발자 옵션을 켠 후 USB 디버깅을 활성화해주세요.

이후, 다음 과정을 통해 메신저봇에서 소켓 서버를 열어주세요.

![1. 공용 설정 진입](https://478792065-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKFMjbHsUYtOlXsha0M%2F-MKepLilX67iLDZiMtZz%2F-MKer1TRV_-jwQ0rMtvG%2FKakaoTalk_20201028_011942405.jpg?alt=media\&token=43086753-d10e-4897-a21c-4a0db09d5063)

![2. 스크롤을 내려 "소켓 통신" 찾기](https://478792065-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKFMjbHsUYtOlXsha0M%2F-MKepLilX67iLDZiMtZz%2F-MKerITDbmYSVRicndXv%2FKakaoTalk_20201028_011942405_01.jpg?alt=media\&token=1e0fdcce-4550-49ed-81b0-f7b7bd678901)

![3. Open Socket Server 스위치 켜기 (만약 Port번호를 변경한다면 아래 adb 명령에서도 변경해야 합니다.)](https://478792065-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKFMjbHsUYtOlXsha0M%2F-MKepLilX67iLDZiMtZz%2F-MKerEx7X7qa4UwvG7ji%2FKakaoTalk_20201028_011942405_02.jpg?alt=media\&token=0f04abca-fae3-4cb2-bdb5-1142435d8b70)

USB등을 통해 PC와 연결한 후, PC에서 adb가 있는 폴더에서(또는 adb의 경로를 PATH 환경변수에 등록한 후) 명령 프롬프트를 열어 다음 명령어를 입력하세요. adb가 설치되어 있지 않다면 [여기서 다운로드할 수 있습니다.](https://developer.android.com/studio/releases/platform-tools?hl=ko)

```bash
adb forward tcp:9500 tcp:9500
```
