Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

[#27] 1대1 채팅 구현 #51

Open
3 tasks
wooyounggggg opened this issue Sep 8, 2021 · 1 comment
Open
3 tasks

[#27] 1대1 채팅 구현 #51

wooyounggggg opened this issue Sep 8, 2021 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@wooyounggggg
Copy link
Collaborator

wooyounggggg commented Sep 8, 2021

사용자가 다른 사용자에게 채팅을 요청하면, 1대1 채팅이 가능합니다.
기능을 구현하기 위해, 웹 소켓에 대해 공부하고 채팅 API를 개발합니다.

  • 웹 소켓 공부하기 및 정리(for 기술 포스팅)
  • 공부한 내용을 바탕으로 적용하여 채팅 구현하기
  • 채팅 테스트
@wooyounggggg wooyounggggg added the enhancement New feature or request label Sep 8, 2021
@wooyounggggg wooyounggggg self-assigned this Sep 8, 2021
@wooyounggggg
Copy link
Collaborator Author

Spring Docs

Web Socket Support Docs를 정리합니다.

Introduction

WebSocket 표준 RFC 6455에서 정의되었습니다.
WebSocket은 초기 연결시 HTTP를 사용하여 3-way handshaking 방식을 거친 후, 두 엔드포인트간 연결이 성립하면
그 때부터 TCP 소켓이 열리고, 클라이언트와 서버 모두 서로에게 메시지를 전송할 수 있게 됩니다.

Spring 4에서부터 WebSocket을 포괄적으로 지원하는(PSA를 말하는 것으로 생각됩니다) websocket 모듈이 포함되었고,
이는 자바 WebSocket API 표준과 호환된다고 합니다.

Messaging Architecture

웹 소켓은 초기 연결시에 HTTP를 통하기 때문에, 초기 연결에 필요한 HTTP URL을 필요로 합니다.
하지만 한 번 소켓이 연결되고 나면, 이후에는 HTTP와는 상이한 방식으로 동작하여, 오히려 JMS / AMQP 등의 메시징 API
가까운 방식으로 동작합니다.

Web Socket 사용처

Web Socket은, 클라이언트 - 서버가 높은 빈도와 짧은 대기 시간으로 이벤트를 교환해야 할 때 사용합니다.
그렇지 않고 통신간 몇 분의 간격이 있거나, 주기적으로 업데이트 되지만 시간 간격이 길고 일정한 통신의 경우에는
Real-time DB나 Polling 등의 방식을 채택하는 것이 더 좋습니다.

스프링은 @Controller 또는 @RestController 클래스가 HTTP 요청 및 WebSocket 메시지 요청을 둘 다 handling 할 수 있게 합니다. Spring MVC request handling 메서드나 관련한 모든 메서드는 특정 WebSocket 클라이언트 또는 전체에게 브로드캐스팅 할 수도 있다고 합니다.

WebSocket API

SockJS Fallback Options

Overview of STOMP

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant