https://www.youtube.com/watch?v=sKCCwl5lNBk&ab_channel=PhilippLackner # Ktor
https://github.com/elye/demo_android_jetchat_with_websocket/tree/main/app/src/main/java/com/example/compose/jetchat
https://youtu.be/qUmE2nrgepo
https://code-lab1.tistory.com/300
양방향 통신:
WebSocket은 서버와 클라이언트 간에 동시에 데이터를 주고받을 수 있는 양방향 통신 채널을 제공 → 실시간 상호작용이 가능.
낮은 지연 시간:
WebSocket은 한 번 연결이 수립되면 지속적으로 열려 있으므로, 추가적인 핸드셰이크 없이 데이터를 빠르게 주고받을 수 있음.
효율적인 통신:
한 번 연결이 개설되면, 추가적인 헤더 또는 메타데이터 없이 작은 패킷으로도 데이터를 전송할 수 있다. → 이는 트래픽 부하를 줄이고 효율성을 높음.
이진 및 텍스트 데이터 지원:
WebSocket은 텍스트와 이진 데이터 모두 지원→ 더 다양한 유형의 데이터를 처리할 수 있습니다.
실시간 통신:
양방향 통신 능력으로 인해 채팅, 게임, 실시간 트레이딩 등과 같은 실시간 애플리케이션에 이상적
효율성:
WebSocket은 지속적인 연결과 작은 오버헤드로 인해, HTTP 폴링 방법보다 통신 효율이 높음
표준화 및 브라우저 지원:
WebSocket은 IETF에 의해 표준화되었으며, 모든 주요 웹 브라우저에서 지원됨.
복잡성:
WebSocket은 상대적으로 복잡한 프로토콜이며, 구현과 디버깅이 다른 방법들에 비해 까다로움
호환성 문제:
WebSocket은 HTTP와 다른 프로토콜이므로, 일부 프록시, 방화벽, 또는 네트워크 인프라가 WebSocket 트래픽을 적절하게 처리하지 못할 가능성이 있음
보안 고려사항:
WebSocket은 보안을 위해 WSS(WebSocket Secure)를 사용할 수 있지만, 개발자들은 여전히 중간자 공격(Man-in-the-Middle attacks), 크로스 사이트 웹소켓 하이재킹(Cross-Site WebSocket Hijacking) 등과 같은 보안 이슈를 고려해야 함.
서버 자원 사용:
지속적인 연결로 인해, 많은 수의 동시 사용자를 지원하는 데 서버 자원 부하가 높아질 것을 고려해야 함.
좋은 글 감사합니다~