ホームページ  >  記事  >  バックエンド開発  >  JavaScript - QQ のような Web チャット機能を作成したいのですが、どうやって実装すればよいですか? ?

JavaScript - QQ のような Web チャット機能を作成したいのですが、どうやって実装すればよいですか? ?

WBOY
WBOYオリジナル
2016-09-19 09:16:241861ブラウズ

ウェブベースのチャットツールを作成するとき、リアルタイムメッセージングには通常どのような方法を使用しますか? ?

私が知っていること:

  1. ajax ポーリング (リソースの無駄で良くないと言われています...)

  2. EventSource (サポートが不十分、IE はまったくサポートしていません..)

  3. WebSoket (あまり詳しくありません...)

さらに、Baidu で検索したところ、ブラウザが WebSocket をサポートしていない場合でも、WebSocket を実装できるサードパーティのライブラリがあることがわかりました。いわゆる WebSocket は、Ajax ポーリングを使用することと同じですか?瞬時のコミュニケーションを実現するには? ?

現在一般的に使用されているWebリアルタイム通信技術は何ですか? ?小白はアドバイスを求め、偉大な神に飛行機で来るように頼みます...

返信内容:

ウェブベースのチャットツールを作成するとき、リアルタイムメッセージングには通常どのような方法を使用しますか? ?

私が知っていること:

  1. ajax ポーリング (リソースの無駄で良くないと言われています...)

  2. EventSource (サポートが不十分、IE はまったくサポートしていません..)

  3. WebSoket (あまり詳しくありません...)

さらに、Baidu で検索したところ、ブラウザが WebSocket をサポートしていない場合でも、WebSocket を実装できるサードパーティのライブラリがあることがわかりました。いわゆる WebSocket は、Ajax ポーリングを使用することと同じですか?瞬時のコミュニケーションを実現するには? ?

現在一般的に使用されているWebリアルタイム通信技術は何ですか? ?小白はアドバイスを求め、偉大な神に飛行機で来るように頼みます...

Workerman は純粋な PHP开发的开源高性能的PHP socket サーバー フレームワークです。モバイルアプリ、モバイルゲームサーバー、オンラインゲームサーバー、チャットルームサーバー、ハードウェア通信サーバー、スマートホーム、車両のインターネット、モノのインターネット、その他の分野の開発で広く使用されています。 TCP の長い接続をサポートし、Websocket、HTTP およびその他のプロトコルをサポートし、カスタム プロトコルをサポートします。 Workerman をベースとすることで、開発者はビジネス ロジックの開発により集中できるようになり、基礎となる PHP Socket の開発について心配する必要がなくなりました。
git リポジトリ: https://github.com/walkor/Wor...
中国語ホームページ: http://www.workerman.net/
中国語ドキュメント: http://doc3.workerman.net/

質問者はこれを試すことができます。

2 つの PHP ソリューションについて話します。そのうちの 1 つは誰かが言及した WorkerMan で、もう 1 つは Swoole に基づいて Fengge によって開発された PHPWebIM です。

PECL 拡張機能 Swoole は、PHP を使用した高性能ソケット アプリケーションの作成をサポートしています:

リーリー

PHPWebIM は、PHP Swoole 拡張機能と Swoole Framework に基づいて Swoole によって開発された公式 WebSocket Web インスタント チャット ツールです。

PHPWebIM は WebSocket+Comet プロトコルをサポートしており、IE を含むすべての種類のブラウザで使用できます。デモをご覧ください。
比較的リアルタイムのメッセージ通知のみを実装したい場合は、AJAX ポーリングを使用することもできます。

1) 単一ページ (1 ページのみでポーリング)

2) SetInterval 間隔のパッシブ ポーリング (キープアライブ永続接続、30 など)秒)
3) window.onfocus ウィンドウはフォーカスを取得し、アクティブにトリガーされます (イベント駆動型)
ポーリング間隔が短すぎるため、ユーザーが開くページが多すぎるため、サーバーに過剰な負荷がかかる可能性があります。
リアルタイム要件が高い場合は、2 分に 1 回ポーリングするなど、間隔を増やすことができます。
リーリー

私は以前、nodejsソケット.ioを使用して作成したことがあります。直接検索すると、他の人が書いた多くの例が見つかります: http://www.open-open.com/lib/...

正解は二階です。

ケースのアドレス: http://www.workerman.net/

WebSocket は ajax を介して実装されるわけではありません

WebSocket を使用するのが最も完璧であり、workerman、react、swoole などのフレームワークを使用して実装することもできますが、その実装ではより多くのリソースが消費されます。 WebSocket よりもコストが低くなります。

実装コストが最も低いリアルタイム ポーリングもありますが、効率は間違いなく最も低くなります。スケジュールされたポーリングを使用します。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。