Netty 을 기반으로 TCP 프로토콜을 이용하고 데이터는 JSON 을 이용한 싱글 서버용 채팅 서버입니다. Spring Boot 에서 작동하기 때문에 Injection 을 이용할 수 있습니다.
이 프로그램은 Netty 기반 UDT 프로토콜을 이용하고 데이터는 Protobuf 을 이용한 멀티 서버용 채팅 서버를 개발하면서 터득한 몇 가지 노하우를 공개하기 위해 만든 일종의 예제입니다.
IntelliJ 에서 개발하였습니다.
The Artistic License 2.0 입니다. 제약이 많은 라이센스이니 주의하여 주십시오.
git clone 을 한 뒤 maven 으로 package 를 만들어서 jar 파일을 실행하거나, IDE 에서 Spring boot 로 Run 하면 됩니다. (스프링 부트를 잘 모르시는 분을 위해 설명드리면) 이 때 실행되는 경로(Working Directory)는 프로젝트(모듈) 디렉토리로 설정해야 config/ 의 application.yml 설정 파일을 읽습니다.
서비스 실행 뒤, 두 개의 클라이언트(윈도우즈 내장 telnet 으로도 충분합니다)로 접속 후 아래와 같이 로그인-메세지 발송을 테스트 해봅니다.
> telnet localhost 9812 {"method": "login", "userId": "test1", "password": "123456"}
> telnet localhost 9812 {"method": "login", "userId": "test2", "password": "098765"} {"method": "send", "content": "Send Message"}
채팅 룸을 만들거나 메세지를 보내는 것은 아래와 같이 룸 생성-메세지 발송을 테스트 해봅니다.
{"method": "create_room"}
{"method": "enter_room", "roomId": "(1번 클라이언트에서 응답으로 온 roomId)"} {"method": "send_room", "content": "Test Message"}
채팅룸에서 나가는 것은 아래와 같은 명령을 이용합니다.
{"method": "exit_room"}