2010-12-29 3 views
1

저는 PHP & MySQL을 사용하여 상당히 기본적인 AJAX 채팅을했습니다. 채팅 메시지는 MySQL 데이터베이스에 저장되며 새 메시지를 확인하기 위해 몇 초마다 폴링합니다.AJAX 라이브 채팅에서 채팅 중재를 구현하는 방법은 무엇입니까?

대역폭과 업데이트 시간을 줄이기 위해 첫 번째 요청에서 모든 메시지를 반환하고 이후 각 요청은 마지막 ID보다 큰 ID의 메시지 만 반환하도록 설정했습니다 클라이언트가 수신 한 메시지 ID. 채팅의 맨 아래에 새 메시지를 추가하고 맨 위에있는 이전 메시지를 제거하여 항상 채팅 메시지를 150 개의 메시지로 유지합니다.

위대한 작품이지만 치명적인 결함이 하나 있습니다. 중재자가 채팅 메시지를 삭제하면 페이지를 새로 고침하지 않으면 채팅 화면에서 채팅 메시지가 삭제되지 않습니다. 메시지가 삭제되도록 시스템을 변경하거나이 방법이 작동하도록 접근 방식을 변경하는 방법은 무엇입니까?

답변

0

삭제 된 ID를 어떻게 든 추적 할 수 있습니다. 데이터베이스에서 삭제 플래그를 지정하거나 레코드를 실제로 삭제해야하는 경우 삭제 된 메시지의 ID를 추적하십시오. 그런 다음 삭제 된 ID를 나열하는 AJAX 응답에 새 섹션을 추가하십시오.

클라이언트는 메시지 기록을보고 해당 항목을 삭제할 수 있습니다. 채팅 내역의 메시지에 메시지 ID를 첨부했다고 가정하면 비교적 간단한 작업입니다.

관련 문제