メッセージプッシュにワーカーマンを使用する方法
次のコラム workerman チュートリアルでは、workerman を使用してメッセージをプッシュする方法を紹介します。困っている友人の役に立てば幸いです。
Workerman は、純粋に PHP で開発されたオープンソースの高性能 PHP ソケット サーバー フレームワークです。モバイル アプリ、モバイル通信、WeChat アプレット、モバイル ゲーム サーバー、オンライン ゲーム、PHP チャット ルーム、ハードウェア通信、スマート ホーム、車両のインターネット、モノのインターネット、その他の分野の開発で広く使用されています。
TCP 長い接続をサポートし、Websocket、HTTP およびその他のプロトコルをサポートし、カスタム プロトコルをサポートします。非同期 Mysql、非同期 Redis、非同期 Http、非同期メッセージ キューなど、多くの高性能コンポーネントを備えています。同様のものには swoole や MeepoPS などがあります。
まず、workerman の Web メッセージ プッシュ システム web-msg-sender をダウンロードします。
# wget http://www.workerman.net/download/senderzip # unzip senderzip #cd web-msg-sender #vim start.php
use Workerman\Worker; // composer 的 autoload 文件 include __DIR__ . '/vendor/autoload.php'; if(strpos(strtolower(PHP_OS), 'win') === 0) { exit("start.php not support windows, please use start_for_win.bat\n"); } // 标记是全局启动 define('GLOBAL_START', 1); // 加载IO 和 Web require_once __DIR__ . '/start_io.php'; 可以注释掉 webServer 服务 没什么用 省点资源 // require_once __DIR__ . '/start_web.php'; // 运行所有服务 Worker::runAll();
保存
#vim start_io.php 找到 将端口改成你要监听的端口 我是2120 记住要在安全组里入方向添加白名单 // PHPSocketIO服务 $sender_io = new SocketIO(2120); 服务端设置完毕后 #php start.php start -d //开启服务 并保持进程
使用するプッシュクラスはtp5です
<?php namespace app\index\moudel; /** * 推送事件 * 典型调用方式: * $push = new WebSocket(); * $push->setUser($user_id)->setContent($string)->push();//连贯操作 * * Class WebSocket * @package app\index\moudel; */ class WebSocket { /** * @var string 目标用户id */ protected $to_user = ''; /** * @var string 推送服务地址 */ protected $push_api_url = 'http://127.0.0.1:2000'; /** * @var string 推送内容 */ protected $content = ''; /** * 设置推送用户,若参数留空则推送到所有在线用户 * * @param string $user * @return $this */ public function setUser($user = '') { $this->to_user = $user ? : ''; return $this; } /** * 设置推送内容 * * @param string $content * @return $this */ public function setContent($content = '') { $this->content = $content; return $this; } /** * 推送 */ public function push() { $data = [ 'type' => 'publish', 'content' => $this->content, 'to' => $this->to_user, ]; // var_dump($data); // var_dump($this->push_api_url); $ch = curl_init (); curl_setopt($ch, CURLOPT_URL, $this->push_api_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); $res = curl_exec($ch); curl_close($ch); dump($res); } }
操作コントローラ
<?php namespace app\index\controller; use think\Controller; use app\index\moudel\WebSocket; class Index extends Controller { /** * 推送一个字符串 */ public function push_msg(){ $uid = input('uid','');//uid为空的时候推送给所有用户 $string = '这是一个推送的测试'; $string = input('msg') ? : $string; $push = new WebSocket(); $push->setUser($uid)->setContent($string)->push(); } /** * 推送目标页 * * @return \think\response\View */ public function targetPage(){ return view(); } }
プッシュターゲットのフロントエンド表示
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <strong id="count"></strong> <h1 id="target"></h1> </body> </html> <script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script> <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script> <script> jQuery(function ($) { // 连接服务端 var socket = io('http://39.106.132.216:2000/'); //这里当然填写真实的地址了 // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数,但一定是唯一标识 uid = 321; // socket连接后以uid登录 socket.on('connect', function () { socket.emit('login', uid); }); // 后端推送来消息时 socket.on('new_msg', function (msg) { console.log("收到消息:" + msg); $('#target').append(msg).append('<br>'); }); // 后端推送来在线数据时 socket.on('update_online_count', function (online_stat) { console.log(online_stat); $('#count').html(online_stat); }); }) </script>
http://我自己的域名/index/index/pushAString?uid=123 ok 为推送成功 offline 为未在线 fail 为失败
フロントエンドは、カスタマイズされた uid として 321 を正常に表示します。
以上がメッセージプッシュにワーカーマンを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Workerman ドキュメントでファイルのアップロードとダウンロードを実装するには、特定のコード サンプルが必要です はじめに: Workerman は、シンプル、効率的、使いやすい高性能 PHP 非同期ネットワーク通信フレームワークです。実際の開発では、ファイルのアップロードとダウンロードが一般的な機能要件となりますが、この記事では、Workerman フレームワークを使用してファイルのアップロードとダウンロードを実装する方法と、具体的なコード例を紹介します。 1. ファイル アップロード: ファイル アップロードとは、ローカル コンピューター上のファイルをサーバーに転送する操作を指します。以下が使用されます

Swoole と Workerman はどちらも高性能の PHP サーバー フレームワークです。 Swoole は、非同期処理、優れたパフォーマンス、スケーラビリティで知られており、多数の同時リクエストと高スループットを処理する必要があるプロジェクトに適しています。 Workerman は、使いやすさや同時実行量が少ないプロジェクトに適した直感的な API を備え、非同期モードと同期モードの両方の柔軟性を提供します。

Workerman ドキュメントの基本的な使用方法の実装方法の紹介: Workerman は、開発者が同時実行性の高いネットワーク アプリケーションを簡単に構築できるようにする高性能 PHP 開発フレームワークです。この記事では、インストールと構成、サービスとリスニング ポートの作成、クライアント リクエストの処理など、Workerman の基本的な使用方法を紹介します。そして、対応するコード例を示します。 1. Workerman のインストールと構成 コマンド ラインに次のコマンドを入力して、Workerman をインストールします。

Workerman 開発: UDP プロトコルに基づくリアルタイム ビデオ通話 概要: この記事では、Workerman フレームワークを使用して、UDP プロトコルに基づくリアルタイム ビデオ通話機能を実装する方法を紹介します。 UDP プロトコルの特性を深く理解し、コード例を通じて、シンプルだが完全なリアルタイム ビデオ通話アプリケーションを構築する方法を示します。はじめに: ネットワーク通信において、リアルタイムのビデオ通話は非常に重要な機能です。従来の TCP プロトコルでは、リアルタイム性の高いビデオ通話を実装する場合、伝送遅延などの問題が発生する可能性があります。そしてUDP

Workerman ドキュメントでリバース プロキシ機能を実装するには、具体的なコード例が必要です はじめに: Workerman は、豊富な機能と強力なパフォーマンスを提供する高性能 PHP マルチプロセス ネットワーク通信フレームワークであり、Web のリアルタイム通信や長時間の通信で広く使用されています。接続、サービス シナリオ。このうち、Workermanはリバースプロキシ機能もサポートしており、サーバーが外部サービスを提供する際の負荷分散や静的リソースのキャッシュを実現できます。この記事ではWorkermanを利用してリバースプロキシ機能を実装する方法を紹介します。

Workerman を使用して高可用性ロード バランシング システムを構築する方法には、特定のコード サンプルが必要です。現代のテクノロジーの分野では、インターネットの急速な発展に伴い、大量の同時リクエストを処理する必要がある Web サイトやアプリケーションがますます増えています。高可用性と高性能を実現するために、負荷分散システムは不可欠なコンポーネントの 1 つになっています。この記事では、PHP オープン ソース フレームワーク Workerman を使用して高可用性負荷分散システムを構築する方法を紹介し、具体的なコード例を示します。 1. ワーカーマンワークの紹介

Workerman ドキュメントにタイマー機能を実装する方法 Workerman は、タイマー機能を含む豊富な機能を提供する強力な PHP 非同期ネットワーク通信フレームワークです。タイマーを使用して、指定された時間間隔内でコードを実行します。これは、スケジュールされたタスクやポーリングなどのアプリケーション シナリオに非常に適しています。次に、Workerman でタイマー機能を実装する方法と具体的なコード例を詳しく紹介します。ステップ 1: Workerman をインストールする まず、Worker をインストールする必要があります

Workerman ドキュメントで TCP/UDP 通信を実装する方法には、特定のコード サンプルが必要です。Workerman は、TCP および UDP 通信の実装に広く使用されている高性能 PHP 非同期イベント ドリブン フレームワークです。この記事では、Workerman を使用して TCP および UDP ベースの通信を実装する方法を紹介し、対応するコード例を示します。 1. TCP 通信用の TCP サーバーを作成します。Workerman を使用して TCP サーバーを作成するのは非常に簡単です。次のコードを記述するだけです: <?ph
