문제

저는 페이스북/Gmail 채팅과 비슷한 것을 구현하려고 합니다.나는 그들이 Comet & Jabber를 그들의 기술로 사용한다는 것을 알고 있습니다.하지만 몇 가지 사항에 대해 혼란스러워요.

  1. 재버가 정말 필요한가요?대신에 from, to, message, sent 및 recd가 포함된 간단한 mysql 테이블을 사용할 수 있습니까?mysql을 사용하는데 있어서 비효율성은 없나요?성능 손실이 있나요?

  2. 일반 웹 서버를 사용하여 Comet을 구현할 수 있나요?특별한 서버가 필요합니까?AFAIK, apache+php는 너무 많은 열린 연결을 처리할 수 없습니까?단순 폴링을 사용해야 합니까? 시스템에 부정적인 영향을 미치게 됩니까?일반 웹호스트에서 기본적으로 무엇을 사용할 수 있나요?(채팅 앱을 판매하면 대부분의 사람들에게 효과가 있을 것이기 때문입니다.)

  3. (현재) Comet을 구현하는 가장 좋은 방법은 무엇입니까?무한 iframe이 좋은 생각인가요?잠시 후 PHP 시간 초과가 발생하지 않습니까?크로스 브라우저 솔루션이 될까요, 아니면 추악한 해킹을 작성해야 합니까?그러면 서버 부하가 발생합니까?Gmail과 Facebook은 영구 연결을 위해 무엇을 사용합니까?

도움이 되었습니까?

해결책

좋은 질문입니다. 주말에 이 내용이 스택에서 사라지지 않기를 바랍니다.플래시 키루파를 사용하고 싶다면 PHP와 소켓 사용법에 대한 좋은 튜토리얼이 있습니다.Comet에 관한 한, 일종의 서버 구현이 필요하다고 생각합니다.지금 내 미약한 지식은 여기까지다.

간단한 폴링 예(jquery + asp.net)http://trappedinhoth.blogspot.com/2009/04/ajax-jquery-chat-demo.html

Kirupa의 튜토리얼(php5 소켓 + 플래시 8)http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm

오픈 소스 플래시 채팅 클라이언트(google, 그 외 다양한 기능)https://blueimp.net/ajax/

혜성 정보http://cometdaily.com/

나는 귀하의 질문에 실제로 대답하는 것이 아니라 더 많은 리소스를 알려줄 뿐입니다.다른 분들은 어떤 답변을 주실지 매우 궁금합니다.

다른 팁

재버가 정말 필요한가요?대신 메시지, 메시지, 보내기 및 red와 함께 간단한 mySQL 테이블을 사용할 수 있습니까?MySQL을 사용하는 데 비효율이 있습니까?Is 성능 손실이 있나요?

예, mysql이 아닌 jabber를 사용해야 합니다.RDBMS를 사용하는 것이 왜 적합하지 않은지에 대한 자세한 내용은 Stonebraker 등의 [The End of an Architectural Era (It's Time for a Complete Rewrite)][1]을 읽어보실 수 있습니다.

혜성을 일반 웹 서버?몇 가지가 필요합니까? 특별 서버?...간단한 투표에 부정적인 영향을 미칠까요? 내 시스템에 미치는 영향은 무엇인가요?무엇을 사용할 수 있나요? 일반 웹호스트에서 바로 사용할 수 있나요?Gmail과 Facebook은 영구 연결을 위해 무엇을 사용합니까?

혜성은 다소 모호한 용어이지만 걱정할 필요는 없습니다.특별한 서버가 필요하지 않으며 폴링을 사용해서는 안됩니다.[BOSH][2]를 사용할 수 있습니다. 이는 Facebook(그리고 Gmail도 마찬가지)이 사용하는 방식이기도 합니다.

클라이언트 측에서는 [JSJaC][3](또는 [Github의 내 포크][4])를 사용하고 서버 측에서는 [ejabberd][5]를 사용하세요.둘 다 [BOSH][6](및 [BOSH를 통한 XMPP][7])를 지원합니다. 즉, XMPP 서버에 직접 HTTP 연결을 만들고 폴링을 피하며 높은 트래픽 로드를 처리할 수 있습니다.

이들 모두에 대한 링크는 다음 위치에 북마크되어 있습니다. http://delicious.com/petef/stackoverflow-843889

나는 Jabber가 (엄마) 미들웨어로 안전하게 개념화될 수 있다고 생각합니다. 반면 MySQL은 확실히 (영구 저장소) 백엔드입니다.그래서 그것은 사과와 오렌지입니다.

RDMBS의 ACID 보장 및 확장 특성으로 인해 발생하는 제한을 고려할 때 대규모 web2.0 애플리케이션 중 어느 것도 실시간 메시징을 위해 RDBMS에 의존할 수 없습니다.(SQL 테이블을 즉석에서 분할하여 더 많은 서버를 추가하면 관련된 문제 중 하나만 파악하는 것을 생각해 보십시오.)

가장 중요한 고려 사항은 시스템에 있는 메시지의 내구성입니다.영원히 지속되어야 할까요, 아니면 주어진 기간 동안에만 지속되어야 할까요?채팅 애플리케이션이라는 점을 고려하면 후자일 가능성이 높습니다.RDBMS 대신 메모리 기반 저장소를 사용하는 것은 어떨까요?

Jabber를 사용해야 하는 이유는 무엇입니까?글쎄, 그것은 일종의 표준이므로 현재로서는 문제가 되지 않더라도 미래에 상호 운용 가능성이 열릴 것입니다.

더 중요한 것은 오랫동안(인터넷 개 시절) 진지하게 개발되어 온 시스템이므로 (현재로서는) 당신이 디자인하는 어떤 것보다 계속해서 더 성숙해질 것이라고 가정하는 것이 확실히 공평합니다. , 구현, 디버그 및 사내 생산 준비가 가능합니다.

혜성에 대해 전혀 모르므로 코멘트하지 마세요!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top