온라인 채팅방은 여러 사람과의 커뮤니케이션을위한 온라인 플랫폼입니다. 점점 더 많은 새로운 기술의 발명과 성숙으로 온라인 채팅방도 다양한 기술을 사용했습니다. 이 기사를 간단히 요약하고 싶습니다.
우선, 프론트 엔드 기술에 대해 이야기합시다. 최근에는 HTML5 기반 WebSocket이며 브라우저와 서버 간의 전이중 통신을 구현합니다. WebSocket Communication 프로토콜은 2011 년 IETF에 의해 표준 RFC 6455로 지정되었으며 WebSocket API는 W3C에 의해 표준으로 지정되었습니다. WebSocket API에서 브라우저와 서버는 악수 만하면 브라우저와 서버 사이에 빠른 채널이 형성됩니다. 데이터는 둘 사이에서 직접 전송 될 수 있습니다. 그러나 WebSocket은 HTML5 API이므로 많은 브라우저가 아직 지원되지 않으므로이 방법은 특히 사용되지 않습니다. 두 번째 유형은 Ajax입니다. 투표 방법을 채택합니다. 가끔씩 서버로 이동하여 데이터를 다운로드하고 업데이트되었는지 확인합니다. 이 장점은 비동기 요청 처리 (동기화도 설정 될 수 있음)이며 사용자의 다른 작업을 차단하지는 않습니다. 단점은 중단되지 않은 폴링이 대역폭을 소비 할뿐만 아니라 너무 많은 터미널 및 서버 리소스를 차지한다는 것입니다. 또한 Ajax 폴링에 대한 시간 간격이 있기 때문에 획득 된 메시지는 메시지 트리거가 아니기 때문에 실시간이 아니며 Ajax의 효율성이 거의 가장 낮습니다. 세 번째 유형은 서버 기반 푸시 기술 (혜성)입니다. 푸시라고하지만 실제로 의사 푸시입니다. 원칙은 터미널과 서버간에 긴 연결을 설정하는 것입니다. 프론트 데스크는이 긴 연결의 내용이 변경되었는지 여부를 결정하여 컨텐츠를 얻습니다. 이 장점은 자원이 적고 실시간 성능이 우수하다는 것입니다. 서버에서 특별한 지원이 필요하며 오랫동안 연결을 차지합니다. 이제 점점 더 많은 서비스 가이 기술을 채택합니다.
배경에 대해 이야기합시다. 채팅방은 IO 응용 프로그램이 높고 데이터베이스가 가장 큰 병목 현상 일 수 있습니다. 채팅의 특징은 Weibo와 비슷한 짧은 텍스트가 많이 있다는 것입니다. 또한, 그것은 다중 사용자 시스템에 속합니다. 사용자가 크기의 순서에 도달하면 MySQL과 같은 관계형 데이터베이스를 사용하는 경우 쿼리 압력이 매우 높아야합니다. 특별한 요구 사항이 없으면 개인적으로 채팅 레코드를 영구적으로 저장할 필요가 없다고 생각합니다. 현재 Memcache 및 Redis와 같은 메모리 기반 스토리지 시스템이 역할을 수행 할 수 있습니다. 아래는 내가 개발 한 Ajax+PHP+Memcache를 기반으로 한 간단한 온라인 대화방입니다.
이 대화방에서 모든 채팅 기록은 Memcache에 저장됩니다. 채팅 레코드의 최대 ID는 CID와 함께 저장되며 채팅 레코드는 MSGCID와 함께 저장됩니다. 삽입 된 각 레코드에 대해 CID는 1만큼 증가합니다. 프론트 데스크는 AJAX를 통해 JSON 형식 데이터를 얻습니다. Memcache는 메모리를 기반으로하기 때문에 전체 시스템은 매우 빠르게 실행됩니다. 아래는 시스템의 소스 코드입니다. 전체 시스템에는 두 개의 파일 만 있으며 함께 10KB 미만입니다.
wulin.com 다운로드
https://github.com/hitoy/online-chatroom
시스템 요구 사항 :
1. Memcache가 설치됩니다
2. PHP에 Memcache Extension을 설치하십시오
3. JavaScript 및 Ajax를 지원하는 최신 브라우저