>  기사  >  웹 프론트엔드  >  javascript, ajax, memcache 및 PHP_javascript 기술을 기반으로 한 간단한 온라인 채팅방

javascript, ajax, memcache 및 PHP_javascript 기술을 기반으로 한 간단한 온라인 채팅방

WBOY
WBOY원래의
2016-05-16 16:16:021325검색

온라인 채팅방은 여러 사람이 소통하는 네트워크 플랫폼입니다. 점점 더 많은 새로운 기술이 발명되고 적용되면서 다양한 기술을 활용하는 온라인 채팅방도 등장했습니다.

먼저 프론트엔드 기술에 대해 이야기하자면, 최신 기술은 물론 브라우저와 서버 간 전이중 통신을 구현하는 HTML5 기반의 웹소켓입니다. WebSocket 통신 프로토콜은 2011년 IETF에서 RFC 6455 표준으로 설정되었고, WebSocket API는 W3C에서 표준으로 설정되었습니다. WebSocket API에서는 브라우저와 서버가 핸드셰이크 작업만 수행하면 브라우저와 서버 사이에 빠른 채널이 형성됩니다. 데이터는 둘 사이에서 직접 전송될 수 있습니다. 그러나 Websocket은 HTML5의 API이고 많은 브라우저에서 지원되지 않기 때문에 현재 이 방법은 특별히 사용되지 않습니다. 두 번째는 폴링(Polling) 방식을 사용하는 ajax로, 가끔씩 서버에서 데이터를 다운로드 받아 업데이트 여부를 확인하는 방식으로, 다른 것을 차단하지 않는 비동기식 요청 처리(동기화 설정도 가능)가 장점이다. 단점은 중단없는 폴링이 대역폭을 소비할 뿐만 아니라 너무 많은 터미널 및 서버 리소스를 차지한다는 점과 Ajax 폴링에는 시간 간격이 있기 때문에 얻은 ​​정보가 실시간이 아니라는 것입니다. 메시지이며 Ajax의 효율성은 거의 가장 낮습니다. 세 번째 유형은 서버 기반 푸시 기술(혜성)로, 푸시라고 하는데 실제로는 터미널과 서버 사이에 긴 연결을 설정하는 것이 원칙입니다. 이 긴 연결의 내용이 변경되었는지 여부를 확인하여 리소스를 적게 차지하고 실시간 성능이 좋다는 장점이 있으며 오랜 시간 동안 연결을 사용합니다. 이제 점점 더 많은 서비스에서 이 기술을 사용하고 있습니다.

채팅방은 IO가 높은 애플리케이션이고, 데이터베이스가 웨이보와 마찬가지로 짧은 텍스트가 많은 것이 특징일 수 있습니다. 그리고 다중 사용자 시스템이기 때문에 사용자 수가 일정 수준에 도달하면 MySQL과 같은 관계형 데이터베이스를 사용하면 쿼리 압력이 커질 것입니다. 특별한 요구 사항이 없다면 채팅 기록을 영구적으로 보관할 필요는 없다고 개인적으로 생각합니다. 이때는 Memcache, Redis 등 메모리 기반 저장 시스템이 활약할 수 있습니다. 아래는 제가 개발한 ajax php memcache 기반의 간단한 온라인 채팅방입니다.

이 채팅방에서는 모든 채팅 기록이 memcache에 저장됩니다. cid는 채팅 기록의 최대 ID를 저장하는 데 사용되며, msgcid는 채팅 기록을 저장하는 데 사용됩니다. . 프론트 데스크는 ajax를 통해 json 형식의 데이터를 얻습니다. memcache는 메모리 기반이므로 전체 시스템이 매우 빠르게 실행됩니다. 다음은 시스템의 소스 코드입니다. 전체 시스템에는 두 개의 파일만 있으며 모두 합쳐서 10KB 미만입니다.

스크립트 홈 다운로드

https://github.com/hitoy/online-chatroom

시스템 요구사항:
1. 멤캐시 설치
2. PHP memcache 확장 설치
3. Javascript와 Ajax를 지원하는 최신 브라우저

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.