2010-07-26 2 views
0

웹 채팅을 만들고 싶었습니다. 내가 PHP 소켓 서버를 사용하는 것이 좋습니다. 필자는 텔넷 클라이언트로 잘 작동합니다.
내가 멍청이가 된 이유는 아약스 (페이지 새로 고침 없음)를 통해 클라이언트로 데이터를 가져 오는 방법 때문입니다.
아약스를 사용하여 PHP 파일을 호출하고 데이터를 가져오고 페이지를 업데이트하는 방법을 생각해 볼 수 있습니다. 그러나 그것은 다른 방향으로 돌아 가지 않을 것입니다.
아니면 뭔가 빠졌습니까?Javascript to socket server conneciton

1 : 1 웹 채팅을 구현 하시겠습니까?

+0

가능한 [회원 사이트에서 PHP 채팅 구현] (0120)을 (를) 다운로드하십시오. –

답변

0

하나의 해결 방법은 긴 폴링입니다. 클라이언트는 AJAX 요청을 스크립트에 열어 데이터가 들어 오길 기다립니다. 1 분 이내에 데이터가 들어오지 않으면 데이터가 반환되고 클라이언트가 연결을 다시 엽니 다. 데이터가 들어 오면 즉시 데이터를 반환하고 클라이언트가 뷰를 업데이트합니다.

데이터를 보내려면 정상적인 AJAX 콜백을 수행하십시오.

+0

이 예제 코드가 있습니까? –

+0

클라이언트 측 코드는 동일하게 유지됩니다. 훨씬 많은 데이터를 실제로 받게 될 것입니다. 서버는 여러 개의 진행중인 연결을 관리하고 들어오는 새 데이터를 처리하고 해당 데이터를 보낼 적절한 연결을 찾은 다음 해당 데이터를 보냅니다. – Yuliy

0

당신은 클라이언트에서 서버로 물건을 보내기에 좋은 클라이언트 시작 통신에 대한 아이디어를 얻었습니다.

HTTP의 상태 비 저장 특성으로 인해 클라이언트에 데이터를 "밀어 넣을"방법이 없습니다.

이 문제를 해결하는 방법은 항상 서버에 다시 연결하여 두는 것입니다. 요청은 보류 중이며 서버가 말할 내용이 있으면 보류중인 요청에 응답합니다. 이런 일이 발생할 때마다 클라이언트는 다음 번에 서버 -> 클라이언트 통신이 이루어질 때까지 앉아있는 채로 새 요청을 만듭니다.

거의 실시간 통신을 구현하는 또 다른 방법은 빈번한 폴링을 사용하는 것입니다. 그러나 나는이 방법을 권장하지 않습니다. 특히 채팅 프로그램에는 적합하지 않습니다.