곱셈추위
155
2018-08-10 19:28:08 작성 2018-08-10 19:29:08 수정됨
6
387

웹소켓을 이용한 실시간 알림 질문입니다.


스프링 기반 프로젝트 진행하면서 실시간 알림 기능을 구현하다가 막혀서 질문드립니다.

(페이지를 새로고침 안하고 DB의 변경된 내용이 현재 화면에 적용되는 형식입니다.)


실시간 알림과 같은 실시간 웹 서비스를 구현하기 위한 방법으로

폴링, 롱폴링, 웹소켓, SSE 등이 있는 것으로 알고 있습니다.


검색해보니 기존에는 폴링과 롱폴링 방식으로 구현되다가

웹소켓이 나온 이후로는 웹소켓으로 구현하는 경우가 많다고 합니다.


현재 진행 중인 프로젝트는 사이트 내 모든 페이지에서 알림을 받을 수 있어야하므로

웹소켓을 이용한다면 모든 페이지에서 소켓 연결이 살아있어야 합니다.


하지만 웹소켓은 페이지가 이동될 때마다 무조건 끊기는데

항시 연결된 상태로 두기 위해 페이지 이동 시마다 연결을 해제하고 다시 연결한다고 하면

이에 소모되는 자원도 폴링이나 롱폴링 방식만큼 서버에 부담이 될것 같습니다.


이러한 상황에서 질문을 드립니다.

1. 페이지가 이동하더라도 웹소켓 연결이 끊기지 않고 계속 살아있게 할 수 있는지

2. 만약 1번이 불가능하다면 페이지 이동이 잦고 동시접속자 수가 많은 사이트의 경우 웹소켓 방식와 폴링/롱폴링 방식 중 어떤 방식으로 구현하는게 맞는지


많은 조언 부탁드립니다.


(ps)

실력 향상을 위해 진행 중인 프로젝트라서 급한 상황은 아니지만, 

개발 기간을 길게 잡지 않은 상황이라 새로운 언어나 개념을 공부해서 접목시키기는 어려운 상황입니다.

그래서 알림 서버와 메인 서버를 따로 두면 된다는 글도 있었지만, Node.js를 아예 모르니 이 방법은 도입하기 어렵습니다.

0
0
  • 답변 6

  • daewon
    286
    2018-08-10 19:39:28 작성 2018-08-10 19:40:22 수정됨

    1. Single-page_application 으로 페이지를 구성하시면 됩니다.

    2. 웹 소켓 연결 비용(SSE 포함)은 그다지 크지 않습니다. 구현 후에 고민해 보셔도 될것 같습니다.



    0
  • 곱셈추위
    155
    2018-08-10 19:48:41

    빠른 답변 감사드립니다.

    사실 다른 선배님께서 SPA를 쓰면 가능하다고 하긴 하셨는데, 이게 단기간에 적용시키기엔 좀 어려운 개념이라고 해서 포기했었습니다.

    웹소켓 연결 비용이 생각보다 얼마 들지 않는다면 그냥 기존에 생각했던대로 웹소켓을 활용하는 방법으로 구현하는쪽으로 진행해야겠습니다.

    0
  • daewon
    286
    2018-08-10 19:50:50

    SPA가 어려운 개념은 아닙니다.

    지금 적용하시는 실시간 업데이트 내용을 페이지 전체에 적용한다고 생각하시면 됩니다.


    0
  • 곱셈추위
    155
    2018-08-10 20:50:11
    한번 찾아보겠습니다. 감사합니다.
    0
  • 초보신입자
    47
    2018-08-10 21:39:46 작성 2018-08-10 21:40:08 수정됨

    파이어베이스 클라우드 메시징도 함찾아보세요 스펙 구현 검토에 옵션이 될수 있을텐데

    0
  • 더미
    10k
    2018-08-11 10:33:13

    spa를 쓰려면

    angular, react, vue 중에 하나로 구현하셔야 될겁니다

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.