2010-06-04 4 views
3

나는 facebook 채팅과 비슷한 채팅을 만들어야합니다.아약스 폴링으로 PHP 실시간 채팅

아약스 폴링 (2-3 초마다 요청 보내기)을 사용하려고합니다.

좋은 접근 방법입니까? 아니면 erlang과 server-comet 같은 다른 서버 측 언어를 사용해야합니까?

+1

관심 사용자 : 채팅 구현에 관한 Facebook 엔지니어 노트 http://www.facebook.com/note.php?note_id=14218138919 –

답변

2

가 아니면 다른 서버 측 언어

를 사용할 필요가

없음 - 그건 정말 관련이 아니에요 - 가장 큰 문제는 HTTP 푸시 알림을 지원하지 않는다는 것입니다 - 그래서 당신은 웹 서버에서 사용하는 언어이다 거의 무의미하다.

server-comet?

Comet은 프로그래밍 기술로서 - 언어가 아니며 특별히 HTTP의 밀어 넣기 부재를 해결하기 위해 설계되었습니다. 일반적으로 브라우저가 요청을 보내면 웹 서버는 응답을 작성한 다음이를 클라이언트로 다시 보냅니다.

1) 응답

2) 타이머가 응답을 보내기 전에

만료에 포함하는 몇 가지 업데이트가 : 할 때까지 혜성으로, 웹 서버 기다립니다. 결과적으로 성능 저하를 유발할 수있는 웹 서버에 대한 비활성 연결 인 경우 숫자가 높아집니다.

다른 접근 방법은 HTTP를 사용하여 다른 프로토콜을 사용하여 채팅 서버에 연결하는 브라우저에서 클라이언트 프로그램을 실행시키는 것입니다. 액티브 X, 자바 또는 플래시로이 작업을 수행 할 수 있습니다.이 모든 작업에는 중요한 단점이 있습니다.

PHP와 javascript를 사용하여 몇 가지 미리 작성된 솔루션이 있습니다. 힌트 - 문서에 Naggle이 없다면 확장 성/성능에 대해 생각하지 않았을 것입니다.

0

당신이 추측 한 사용자 수에 따라 다릅니다. 그것은 당신이 많은 사용자를 가지지 않을 때 작동 할 것입니다 (그것은 그들이 과거에 그것을 한 방법입니다). 하지만 제 의견으로는 x 초 (폴링 간격)까지 지연시킬 수 있기 때문에 채팅이 실시간이 아닙니다.

동시 사용자가 많으면 폴링 모델의 크기가 조정되지 않습니다. 그런 다음 비 차단 긴 폴링 (적어도)을 조사해야합니다. 가능한 모든 경우 비 차단 롱 폴링 기술을 고려해야합니다. 큰 사이트가 실시간 응용 프로그램을 수행하는 방식이기 때문입니다. 그러나 PHP는이 기술에 적합하지 않기 때문에 서버가 다른 프로그래밍 언어를 설치할 수 있도록해야합니다.