ホームページ >バックエンド開発 >PHPチュートリアル >ソケットロング接続サーバーとして、Swoole がユーザー uid=123 で接続しているユーザーに積極的にメッセージをプッシュしたい場合、どのようにメッセージを作成すればよいでしょうか?

ソケットロング接続サーバーとして、Swoole がユーザー uid=123 で接続しているユーザーに積極的にメッセージをプッシュしたい場合、どのようにメッセージを作成すればよいでしょうか?

WBOY
WBOYオリジナル
2016-08-04 09:22:091228ブラウズ

まあ、これは初心者レベルの質問のはずですが、ドキュメントを読んでもまだ理解できません。

返信内容:

まあ、これは初心者レベルの質問のはずですが、ドキュメントを読んでもまだ理解できません。

php のソケットはリソースタイプです: タイプ (Socket) の
resource(4)、つまり、各ソケットハンドルは同じに見えます。 。

そして、Linux C ソケット fd は int 整数であり、それぞれが異なる数値です。

ネイティブ PHP は、「ユーザー uid=123 で接続されているユーザーにメッセージをアクティブにプッシュ」することはできませんが、Linux C によって実装された Swoole のソケットの助けを借りて、「接続されているユーザーにメッセージをアクティブに送信」することができます。uid= のユーザー123、メッセージをプッシュしてください。」

ここでは、System V の最も単純な共有メモリを使用して、プロセス間でデータ IPC を共有し、ユーザー ID とそのソケット接続の間のマッピング テーブルを維持できます。

コードは次のとおりです:

リーリー

その後、n 個のクライアントを開いてコードをテストできます。たとえば、3 つの Telnet 127.0.0.1 1024 を開きます。最後のクライアントはサーバーに「i am lucky man」というメッセージを送信し、最初のクライアントは「broadcast to lucky」を送信します。サーバーに送信します。」とすると、3 番目のサーバーは「some bodyBroadcast to you lucky man」を受信して​​、特定のユーザーにメッセージを送信します

とてもシンプルです、

Swoole は良い方法です、非同期 IO + マルチプロセスも最も成熟した最終ソリューションです (Nginx への敬意)
ははは

uid は、あなたが識別する uid です。サービスへのソケット リンクには、この一意の ID を介してのみメッセージを送信できます。これで、2 つの間のマッピングが可能になります。

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