>백엔드 개발 >PHP 튜토리얼 >javascript - QQ와 유사한 웹 채팅 기능을 만들고 싶은데 어떻게 구현하나요? ?

javascript - QQ와 유사한 웹 채팅 기능을 만들고 싶은데 어떻게 구현하나요? ?

WBOY
WBOY원래의
2016-09-19 09:16:241889검색

웹 채팅 도구를 만들 때 실시간 메시징을 위해 주로 어떤 방법을 사용하시나요? ?

내가 아는 것:

  1. ajax 폴링(자원낭비라고 하는데 좋지 않다고...)

  2. EventSource(지원 불량, IE는 전혀 지원하지 않습니다..)

  3. WebSoket(잘 모릅니다...)

또한 Baidu에서 검색한 결과 브라우저가 WebSocket을 지원하지 않는 경우 실제로 WebSocket을 구현할 수 있는 타사 라이브러리가 있다는 것을 알게 되었습니다. 소위 WebSocket은 EventSource와 동일합니까? Ajax 폴링을 사용하시나요? ?

현재 흔히 사용되는 웹 실시간 커뮤니케이션 기술은 무엇인가요? ? 샤오바이는 조언을 구하고, 위대한 신에게 비행기로 와달라고 부탁하는데...

답글 내용:

웹 채팅 도구를 만들 때 실시간 메시징을 위해 주로 어떤 방법을 사용하시나요? ?

내가 아는 것:

  1. ajax 폴링(자원낭비라고 하는데 좋지 않다고...)

  2. EventSource(지원 불량, IE는 전혀 지원하지 않습니다..)

  3. WebSoket(잘 모릅니다...)

또한 Baidu에서 검색한 결과 브라우저가 WebSocket을 지원하지 않는 경우 실제로 WebSocket을 구현할 수 있는 타사 라이브러리가 있다는 것을 알게 되었습니다. 소위 WebSocket은 EventSource와 동일합니까? Ajax 폴링을 사용하시나요? ?

현재 흔히 사용되는 웹 실시간 커뮤니케이션 기술은 무엇인가요? ? 샤오바이는 조언을 구하고, 위대한 신에게 비행기로 와달라고 부탁하는데...

Workerman은 순수 PHP 개발된 오픈 소스 고성능 PHP socket 서버 프레임워크입니다. 모바일 앱, 모바일 게임 서버, 온라인 게임 서버, 채팅방 서버, 하드웨어 통신 서버, 스마트 홈, 차량 인터넷, 사물 인터넷 및 기타 분야의 개발에 널리 사용됩니다. TCP 긴 연결을 지원하고 Websocket, HTTP 및 기타 프로토콜을 지원하며 사용자 정의 프로토콜을 지원합니다. Workerman을 기반으로 개발자는 비즈니스 로직 개발에 더 집중할 수 있으며 더 이상 PHP 소켓의 기본 개발에 대해 걱정할 필요가 없습니다.
git 저장소: https://github.com/walkor/Wor...
중국어 홈페이지: http://www.workerman.net/
중국어 문서: http://doc3.workerman. 넷/

질문자는 이것을 시도해 볼 수 있습니다.

두 가지 PHP 솔루션에 대해 이야기하자면, 그 중 하나는 누군가가 언급한 WorkerMan이고, 다른 하나는 Swoole을 기반으로 Fengge가 개발한 PHPWebIM입니다.

PECL 확장 Swoole은 PHP를 사용하여 고성능 소켓 애플리케이션 작성을 지원합니다.

<code>apt-get install php-pear php5-dev
yum install php-pear php-devel
pecl remote-info swoole
pecl install swoole</code>

PHPWebIM은 PHP Swoole 확장 및 Swoole Framework를 기반으로 Swoole에서 개발한 공식 WebSocket 웹 인스턴트 채팅 도구입니다.
PHPWebIM은 WebSocket+Comet 프로토콜을 지원하며 IE를 포함한 모든 유형의 브라우저에서 사용할 수 있습니다. 데모를 참조하세요.

상대적으로 실시간 메시지 알림만 구현하려는 경우 AJAX 폴링을 사용할 수도 있습니다.
1) 단일 페이지(한 페이지에서만 폴링)
2) setInterval 간격 수동 폴링(연결 유지) 지속) 연결, 예: 30초)
3) window.onfocus 창이 포커스를 받고 적극적으로 트리거됩니다(이벤트 중심)
폴링 간격이 너무 짧고 사용자가 너무 많은 페이지를 열어 과도한 부담을 줄 수 있음
높은 실시간 성능을 요구하지 않는 서비스의 경우 2분에 한 번씩 폴링하는 등 간격을 늘릴 수 있습니다.

<code>window.onblur  = function() {document.title = '失去焦点';};
window.onfocus = function() {document.title = '获得焦点';};</code>

이전에 nodejs 소켓.io를 사용하여 작성한 적이 있습니다. 직접 검색해 보면 다른 사람들이 작성한 예를 많이 찾을 수 있습니다. http://www.open-open.com/lib/...

정답은 위층입니다.

사례 주소: http://www.workerman.net/

Websocket은 절대 Ajax를 통해 구현되지 않습니다.
Websocket을 사용하는 것이 가장 완벽하며, Workerman, React, Swoole 등의 프레임워크를 통해 구현할 수 있습니다.
Long Polling도 사용할 수 있지만 소모됩니다. 하지만 구현 비용은 websocket보다 낮습니다.
실시간 폴링도 있지만 구현 비용이 가장 낮습니다. 예를 들어 SF의 메시지 알림은 예약 폴링을 사용합니다. >

javascript - QQ와 유사한 웹 채팅 기능을 만들고 싶은데 어떻게 구현하나요? ?

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