알고리즘 및 조언을 얻고자 합니다. > 토크

토크

개발과 관련된 어떤 얘기도 괜찮습니다.

알고리즘 및 조언을 얻고자 합니다. 정보

개발자 알고리즘 및 조언을 얻고자 합니다.

본문

안녕하세요. 

 

도저히 생각이 떠오르지 않는 이 답답함 때문에 팁을 얻고자 남겨봅니다.

  

소켓 채팅을 구현을 하실때 채팅 접속자 목록이 나오는 상태에서 채팅을 하다가

접속자가 버튼을 클릭하지 앟고 정상적인 방법이 아닌 창을 강제로 닫거나 컴퓨터를 종료하였을때

이 접속자가 채팅방을 나가는것을 체크하고자 합니다.

 

어떠한 방법으로 체크를 하시나요??

 

추천
0
비추천
0
  • 복사

댓글 13개

sock.io node js 를 이용한건 아니고요
자체 개발을 하고있습니다.
그래서 disconnect는 해당 사항이 없네요.
답변 감사합니다.

내용을 좀 더 덧붙히자면.................

소켓 서버를 이용 할때요
접속자 목록을 출력합니다.
근데 여기서 클라이언트를 아이피 주소로 물고 있기때문에
공유기를 사용하는 내부 아이피 접속자들일 경우에는 외부아이피가 동일하게됩니다.
그렇다면 이 접속자 목록을 실시간 개별 체크해서 컴터를 강제 종료 및 프로그램 강제 종료시
실시간 체크된 개별 접속자 목록을 제외 시켜줘야 하는데요.

방법이 없을까요??
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=129532&ref=129512


다른 방법으로 짜본적이 없어서 ㅠ.ㅠ
검색해서 링크 띄워 드립니다
이렇게까지 검색까지 해주셔서 감사합니다.
위 사항은 참고를 했지만 아직 해결은 못했네요.ㅎㅎ
그래도 좋은 팁 하나라도 놓치지 않고 기억해둬야겠네요^^
지식 하나 더 배워갑니다
즐거운 하루 보내세요
1. 정상적으로 창을 닫는 경우
  - 창의 unload 이벤트에 disconnect 코드를 넣으면 됩니다.
    : 또는 disconect 했다는 메세지를 서버로 보내고, 서버에서 해당 메세지가 온 클라이언트를 disconnect 하면 됩니다.

2. 비정상적으로 종료하는 경우
  : 랜선이 물리적으로 뽑히는 경우, 인터넷이 강제종료된 경우, 핸드폰에서 밧데리가 나가거나, 그에 준하는 경우
 - 위의 경우 비동기소켓에서는 접속이 끊어진걸 서버소켓이 체크를 못합니다.
따라서, heartbeat 를 보내는 방식을 씁니다.
하트비트를 체크하여, 특정시간이상(예를 들어 1분) 패킷이 없는 경우 강제종료를 시킵니다.

socketio 도 heartbeat 를 보내는걸로 알고 있는데, 자세히는 확인을 해봐야 할듯.
위에 있잖아요... 타이머 돌려서 정기적으로 신호를 보내고 신호에 응답이 없으면 끊긴거로 간주하는걸 heartbeat라 합니다.
흐름도 정도는 구성이 되셔야 할거에요.
그래야 어떻게 구현할것인지를 설계하고 만들 수 있겠죠.
요즘은 socket.io를 이용한 많이들 구현하시더라구요 그걸 참고해보시는것 괜찮을것 같아요
저 같은 경우는 c++를 이용한 소켓을 자체적인 만들고있는거라서요
socket.io나 html5를 이용한 방법에 대해서는 구체적인 답변은 드리기 힘들듯하네요.
그래도 구글이나 네이버 검색하면 소스 및 자료들이 많이나오니 도움이 되시길 바랍니다.
© SIRSOFT
현재 페이지 제일 처음으로