프로젝트/WebSocket
-
Spring Boot WebSocket with Kafka프로젝트/WebSocket 2023. 7. 28. 00:01
개요 지난번 포스팅에서는 Spring WebSocket External Broker 적용을 통해 In-memory Broker인 SimpleBroker를 사용하지 않고 External Broker인 STOMP Message Broker인 ActiveMQ를 적용해 보았습니다. 하지만 저를 포함한 팀원들이 ActiveMQ에 대해 자세히 알지 못했으며 추후 트러블슈팅이나 운영 등을 생각해서 팀원들이 알고 있는 메시지 브로커인 Kafka로 WebSocket을 활용해보고자 합니다. 다시 보는 External Broker를 활용한 STOMP 구조도 하지만 Kafka는 STOMP 프로토콜을 지원하지 않습니다.. Kafka 어떻게 적용하지? - 다시 SimpleBroker로 다시 SimpleBroker로 돌아갑니다. ..
-
Spring WebSocket External Broker 적용(ActiveMQ)프로젝트/WebSocket 2023. 7. 21. 00:01
개요 In-memory Broker인 SimpleBroker를 사용하게 되면 Server Instance가 여러 대 존재할 때 상태에 대한 동기화가 제대로 이루어지지 않을 수 있습니다. 예를 들어, A유저는 Server1에서 웹소켓을 연동하였고, B유저는 Server2에서 웹소켓을 연동하였습니다. 만약 같은 /topic/same을 바라본다고 하더라도 Server1에서 message를 보내면 A만 받을 수 있을 것이며, Server2에서 message를 보내면 B만 받을 수 있습니다. 이에 따라 External Broker를 적용해보고자 합니다. RabbitMQ, ActiveMQ 등을 적용해 볼 수 있습니다. External Broker를 활용한 STOMP 구조도 SimpleBroker를 이용한 구조에서 ..
-
RSocket이란?프로젝트/WebSocket 2023. 7. 20. 00:01
RSocket이란? RSocket은 몇 가지 일반적인 마이크로서비스 통신 문제를 해결하기 위해 설계된 새로운 메시징 프로토콜입니다. TCP 또는 WebSocket을 통해 작동하는 유연한 프로토콜을 사용할 수 있습니다. 이는 변환없이 바이너리 메시지를 처리할 수 있음을 의미하고 Multiplexing, back-pressure, resumption, routing과 같은 제어 기능을 사용할 수 있으며, fire-and-forget, request-response, requset-stream, Channel 등을 이용할 수 있습니다. 또한 RSocket은 reactive로 동작하기 때문에 처리량이 많은 마이크로서비스 애플리케이션에 이상적입니다. Netflix, Pivotal, Alibaba, Facebook..
-
WebSocket Scale Out - 이론편프로젝트/WebSocket 2023. 6. 24. 00:01
개요 webSocket을 흔히 전이중통신이라 말합니다. 웹소켓의 경우에는 끊어지지 전까지 TCP Connection이 계속이 지속되어야 하는데, 그러면 Port를 붙잡고 있는 건지 궁금해졌습니다. 글의 주제가 Scale Out인데 TCP Connection과 Port이야기를 하는 이유는 만약 서버의 포트가 모두 TCP Connection에 의해 연결되면 신규 클라이언트는 연결할 수 없으니 자연스럽게 Scale Out이 필요하게 됩니다. 따라서 먼저 이에대한 궁금증을 해결하고 Scale Out 하는 방법에 대해 알아봅니다. Websocket은 어떤방식으로 Connection 연결을 유지할까? 80번 포트 혹은 443포트로 핸드셰이크과정을 거칩니다. (클라이언트의 무작위의 포트, 서버는 80 혹은 443 포..
-
TCP Socket vs WebSocket프로젝트/WebSocket 2023. 6. 23. 00:01
TCP Socket이란? 네트워크상 서버와 클라이언트 두 개의 프로그램이 특정 포트를 통해 양뱡향 통신이 가능하도록 만들어주는 소프트웨어 장치입니다. intranet 바운더리(조직 내 네트워크)에서 작업하는 경우에는 해당 네트워크의 컴퓨터를 제어하고 TCP 연결에 적합한 포트를 열 수 있기 때문에 TCP 소켓을 통해 통신하는 것이 더 쉽습니다. WebSocket이란? 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜입니다. HTTP나 HTTPS 위에서 동작하도록 설계되었으며 포트를 80번 443번 사용합니다. 이에 따라 HTTP를 통해 연결을 시작하되 TCP 소켓과 유사한 통신 stream을 허용합니다. 둘은 무엇이 다를까? 위의 둘은 서로 상반되는 개념이 아닙니다. 다만 소켓 통신..
-
Spring WebSocket 활용프로젝트/WebSocket 2023. 6. 12. 00:01
개요 - WebSocket connect, disconnect시 클라이언트에게 알리기 - 서버에서 클라이언트에 disconnect 요청 보내기 - 개발테스트를 위한 http로 메시지 발송 개발자도구와 SocketJS http://host:port/myApp/myEndpoint/{server-id}/{session-id}/{transport} 소켓을 연결하면 다음과 같은 url로 연동됩니다. server-id는 클러스터 환경에서 요청을 라우팅 하기 위해 사용 session_id는 SockJS 세션에 속하는 HTTP 요청을 연관시킴 transport는 전송 타입을 가리킴 (websocket, xhr-streaming, xhr-polling) 예를들어 제가한 튜토리얼의 개발자도구 -> Network -> ws..
-
Spring Websocket 이론과 간단한 구현프로젝트/WebSocket 2023. 6. 11. 00:01
개요 https://spring.io/guides/gs/messaging-stomp-websocket/ Spring | Home Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform. spring.io QR 로그인을 구현하기 전, 브라우저와 서버 간 메시지를 주고받는 웹소켓의 Hello, World 애플리케이션을 만드는 과정을 수행해 봅니다. 웹소켓은 TCP 위에 있는 가벼운 계층이며 WebSocket 위에서 동작하는 STOMP라는 프로토콜을 활용합니다. WebSocket이란? HTTP프로토콜과 호환되며, 실시간 양뱡향 통신을 제공하기 위한 프로토콜입니다. 웹 초창기의..
-
QR코드 인증방식 원리프로젝트/WebSocket 2023. 6. 2. 00:01
QR코드란? QR 코드는 Quck Response Code의 약자로 컴퓨터가 만든 흑백 격자무늬 패턴 코드입니다. 이 코드를 통해 정보를 나타낼 수 있는 매트릭스 형태의 이차원 코드입니다. 각 사각형 또는 점은 문자, 숫자 또는 기호와 같은 정보를 나타냅니다. QR 코드는 어디에 사용될까? QR 코드는 웹사이트 URL, 쿠폰, 제품 코드 또는 연락처 정보와 같은 정보를 인코딩하는 데 자주 사용됩니다. 내가 하려고 하는 것 앱을 이용해 QR로그인을 생성하고 TV에서 편리하게 로그인할 수 있도록 한다. 1. TV에서 로그인 시도 시, QR코드를 제공한다. 2.앱에서 QR코드 인식 시, 계정 정보를 TV로 전달한다. 3. TV에서 로그인이 완료된다. QR 코드의 인증방식 1. 사용자가 앱에 로그인한다. 2. ..