Node.js와 라이믹스를 활용하여 "사이트 내부에서" 실시간 푸시 알림을 받아올 수 있습니다

 

웹소켓을 사용하는데, 새로 고침시마다 연결이 끊기는 특성이 있어, 새로고침시마다 안정적으로 이전 세션을 불러옵니다

 

push_code.png

 

푸시 알림은 위에 함수처럼 개인에게 보내는 send(member_srl, data) 혹은 모두에게 보내는 broadcast(data)로 이루어져있으며, 함수 호출시 curl을 통해 내부 node js 서버로 바로 전송됩니다

 

send.png

 

node.js에서는 요청이 들어온 즉시 응답하여 PHP에서의 딜레이를 최소한으로 줄였으며, 해당 요청은 node js상에 비동기 백그라운드에서 처리되어, 딜레이 없이 바로바로 기기에 발송되게 됩니다

 

 

이 기능은 실시간 글/댓글 알림이나, 글/댓글 추가나 수정사항 바로바로 갱신, 라이브 채팅 등에서 유용하게 사용될 수 있어 보입니다

 

또한 여러 기기를 사용하는 사람을 고려하여, 로그인 된 모든 기기에 동일한 알림이 가게 됩니다

 

물론 사이트에 접속하고 있지 않으면 알림이 오지 않는다는 단점이 있지만, 해당 기능은 크롬 알림이나 FCM등 대체제가 있기 때문에 차차 고려해보는것으로..

 

일단 프로토타입은 나온 상태인데, 대규모 커뮤니티에서 많은 요청이 몰릴 경우를 테스트할 수가 없어서 공개까지는 갈길이 머네요 ㅎㅎ;;

 

+) 2.1 신규 모듈 구조로 개발하였습니다~

글쓴이 리버스

profile
모듈 제작하는 현역 대학생 리버스입니다!

== 판매중인 모듈 ==
미션] https://xetown.com/thirdparties/1511787
길드] https://xetown.com/thirdparties/1387146
  • profile

    대규모 커뮤니티에서 많은 요청이 몰릴 경우를 테스트할 수가 없어서

    << 제가 가능합니다! ㅎㅎ

    저희 사이트를 드릴? 게요

  • profile profile
    아직 프로토타입인지라 실사용까진 좀 멀었네요 ㅋㅋ

    방금 쪽지 보냈는데 한번 확인해주세요!
  • profile
    저.. '사이트 내부에서 푸시 알람'이 온다는게 어떤 뜻인가요? 저는 푸시알람이 안드폰이나 아이폰에서 알람오는 건줄 알았거든요.
  • profile profile
    푸시 알람이라기보단 실시간 알림이 좀 더 이해하기 편하실 것 같습니다

    안드로이드, ios, 크롬 푸시 알림은 외부 API를 사용하다보니 별도의 디자인이나 원하는 문구를 넣기가 어렵잖아요?

    하지만 제가 구현한 사이트 내부의 알림에 경우, 단순 텍스트 데이터를 조합하여 사이트에서 원하는 기능과 디자인으로 알림을 만들 수 있게 되는 것이죠

    예를 들자면, 새 글이나 공지사항이 등록되면 사이트 상단에 길쭉하게 알림을 띄운다던지, 댓글을 보고있다가 새로운 댓글이 달리면 새로고침없이 바로 댓글 창 아래에 추가된다던지 등등이 가능하게 되는 것이죠
  • profile profile
    와~~ 대단합니다!!
  • profile
    이런 알림은 오히려 푸시에 대한 액션에 대한 대여폭이 더 필요하므로 오히려 성능에 문제가 되어 대형사이트가 더 먹통이 될 수 있습니다. 대형사이트의 경우 해당 기능을위한 서버를 분리한다 하더라도 메인서버보다 더 사양이 높거나 같은사양의 사버가 필요할거예요
  • profile profile
    그래서 사실상 연구용으로 제작해둔 상태죠 ㅎㅎ

    푸시 알림 자체가 계속 컨넥션을 유지하고 있어야하니까 대역폭을 차지하기는 하지만, 간단한 텍스트 데이터만 오고가는 정도로는 대역폭을 많이 차지하지 않는다는 점도 있고, 소켓 개수와 유지 부분만 개선하면 충분히 쓸만해질 수 있습니다

    정확한 테스트 데이터가 없으니, 차차 연구해볼 필요성이 있다고 생각합니다 :D
  • profile profile
    소켓연결이 한사람당 하나만된다는것도 아니기도하죠 예를들어서 한명이 잠수라도 2개탭을 연결해두면 서버는 할당되어 있는거니까요ㅎ 그런게 좀힘듭니다
  • profile profile

    아하… 그런 점도 있었네요…
    커뮤니티 특성에 따라 수십개씩 탭을 열어두고 천천히 보는 사람도 있던데, 고려할 사항이 한두개가 아니군요 ㅜㅜ

     

    한 유저가 만들 수 있는 최대 소켓 개수를 설정하고, 더 추가해서 들어온다면 이전 연결을 끊어버리는.. 방식으로 해결해볼 수 있을거 같네요

    다만 신뢰성이 떨어질 수 있다보니, 중요한 데이터는 오고가기가 쉽지 않겠네요 흠..

  • profile profile
    네 그래서 동일한 사양보다 더 좋거나 동일한 서버가 필요한샘이죠.
  • profile
    노드 안깔면 못하는거죠?
  • profile profile
    네. 노드 필수입니다
  • profile profile
    저는 노드 없이 ....
  • profile
    알림센터랑 다른 점이 뭘까요?
  • profile profile

    알림센터는 새로고침해야 새 알림이 뜨지만, 이건 실시간으로 보내줄 수 있는 것 같네요.

  • profile profile
    아 그렇군요! 답변 감사합니다!
  • ?
    저도 사이트에 실시간 알림이 필요해 서버구축이 별도 필요가 없는 pusher를 활용해 사용중입니다.
    일정량이 넘어가면 유료이긴 하지만..ㅎㅎ
  • ? profile
    오 별도의 서버 구축이 필요없다면 이게 더 좋은 방식일 수 있겠네요

    비용은 들지만 확장도 쉽게 가능하고 좋네요