75버전까지는 인터넷회선 상태가 안좋을때는
- 퇴장했다,입장했다하는 문구가 자꾸 나왔는데,
(10초안에 접속이 없으면 그냥 나간걸로 표시했기 때문입니다.)

이번에는 window.onunload = function() {}
이렇게 onunload 이벤트에 함수를 실행시켜서,,
방문자데이타파일에 뭔가 기록을 하고,
그 상태로 갱신없이 10초가 지나면 나간걸로 판단하도록 했습니다.

10초 여유를 둔건, 브라우저 새로고침했을때도 그 이벤트가 발생하기 때문입니다.
그리고 FF에서 탭을 클릭해서 닫거나, FF자체를 종료시켜서 닫을때는
그 이벤트가 작동하지 않더군요.
(IE의 경우엔 모든 경우에 다 작동하던데)

그래서 그런 경우에 대비하기위해서
30초동안 접속이 없는 상태면 -
30초동안 접속이 없다고 표시하고, 나간걸로 판단하도록 했습니다.

프록시설정하고 테스트해보니까,, 그래도 30초동안 접속이 없었다고 표시되더군요.
((프록시가 워낙 늦고,상태가 안좋아서))

FF에서 새로고침하면
기존의 글이 안떴는데,
알고보니 FF에서는 새로고침해도, 출력된 인풋값들이 초기화되질 않는거 같더군요.
그래서 새글출력에 관련된 것들은 강제로 초기화되도록 소스를 넣었습니다.

기존에 새글읽는게, 그 파일크기를 클라이언트에 저장했다가,
그 값으로 호출해서, 파일크기가 그거보다 크면, 그 차이만큼 읽어오도록 했었는데,,,,,
프록시를 써서 해보니까,
워낙 상태가 안좋아가지고... 중복출력되는 경우가 가끔 있었습니다.
그니까 파일크기의 값이 서버에서 클라이언트로 왔다갔다하는게 잘 안되다보니까...

그래서 왔다갔다 안시키고, 그냥 서버에 저장되도록 했습니다.
(얼마만큼 읽어갔는지가 각자가 다르니까,, 사용자마다 각각의 파일로)
그래서 상태가 안좋아도, 중복출력되는 경우는 안생깁니다.

외관은 변하지 않았습니다.

--------------------

여기까지가 76버전의 설명이었습니다.
근데 76버전에서 파일업로드 문제가 발견되서,

파일업로드관련 문제랑, 몇몇가지 더.. 에러를 잡아서 77버전으로 올립니다.
76버전은 문제가 드러났으니까, 비공개하고..



mysql 안쓰고, php파일 하나로 돌아갑니다.
압축풀어 폴더채로 업로드하고, chat폴더권한 777주고(설치끝),
index.php에 접속해서 사용하면 됩니다.
by Anna 안나 2008. 5. 26. 18:06