hprose for php


1.客戶端和服務器簡單DEMO

通過工廠方法 create 創建客戶端

$client = \Hprose\Client::create($uriList = null[, $async = true]);

create 方法與構造器函數的參數一樣,返回結果也一樣。但是第一個參數 $uriList 不能被省略。

使用 create 方法更加方便,因此,除非在創建客戶端的時候,不想指定服務地址,否則,應該優先考慮使用 create 方法來創建客戶端。

\Hprose\Client::create 支持創建 Hprose 核心庫上的客戶端,Hprose\Swoole\Client::create 支持創建 swoole 的客戶端。例如:

創建一個同步的 HTTP 客戶端

$client = \Hprose\Client::create('http://hprose.com/example/', false);

創建 HTTP 服務器

use Hprose\Http\Server;  function hello($name) {  return "Hello $name!"; }  $server = new Server(); $server->addFunction('hello'); $server->start();
 

創建一個同步的 TCP 客戶端

$client = \Hprose\Client::create('tcp://127.0.0.1:1314', false);

創建 TCP 服務器

use Hprose\Socket\Server;  function hello($name) {  return "Hello $name!"; } $server = new Server("tcp://0.0.0.0:1314"); $server->addFunction('hello'); $server->start();
 

創建一個異步的 Unix Socket 客戶端

$client = \Hprose\Client::create('unix:/tmp/my.sock');

創建 UNIX Socket 服務器

use Hprose\Socket\Server;  function hello($name) {  return "Hello $name!"; }  $server = new Server("unix:/tmp/my.sock"); $server->addFunction('hello'); $server->start();
 

創建一個異步的 WebSocket 客戶端

$client = \Hprose\Swoole\Client::create('ws://127.0.0.1:8080/');

創建 Web Socket 服務器

use Hprose\Swoole\Server;  function hello($name) {  return "Hello $name!"; } $server = new Server("ws://0.0.0.0:8088"); $server->addFunction('hello'); $server->start();

2.事件

onBeforeInvoke 事件

該事件在調用執行前觸發,該事件的處理函數形式為:

function($name, &$args, $byref, \stdClass $context) { ... }

參數 $name 是服務函數/方法名。 參數 $args 是調用的參數數組,可以聲明為引用參數。 參數 $byref 表示是否是引用參數傳遞。 參數 $context 是該調用的上下文參數。

如果在該事件中拋出異常、返回錯誤對象、或者返回一個失敗(rejected)狀態的 promise 對象。則不再執行服務函數/方法。

onAfterInvoke 事件

該事件在調用執行后觸發,該事件的處理函數形式為:

function($name, &$args, $byref, &$result, \stdClass $context) { ... }

參數 $name 是服務函數/方法名。 參數 $args 是調用的參數數組,可以聲明為引用參數。 參數 $byref 表示是否是引用參數傳遞。 參數 $result 是調用執行的結果,可以聲明為引用參數。 參數 $context 是該調用的上下文參數。

如果在該事件中拋出異常、返回錯誤對象、或者返回一個失敗(rejected)狀態的 promise 對象。則不再返回結果 $result,而是將錯誤信息返回給客戶端。

onSendError 事件

該事件在服務端發生錯誤時觸發,該事件的處理函數形式為:

function(&$error, \stdClass $context) { ... }

如果在該事件中拋出異常、返回錯誤對象。則該錯誤會替代原來的錯誤信息返回給客戶端。

$error 參數可以聲明為引用參數,在事件中可以對 $error 進行修改。

當服務器與客戶端之間發生網絡中斷性的錯誤時,仍然會觸發該事件,但是不會有錯誤信息發送給客戶端。

onSendHeader 事件

該事件在服務器發送 HTTP 頭時觸發,該事件的處理函數形式為:

function(\stdClass $context) { ... }

如果在該事件中拋出異常,則不再執行后序操作,直接返回異常信息給客戶端。

onAccept 事件

該事件在 Socket 或 WebSocket 服務器接受客戶端連接時觸發,該事件的處理函數形式為:

function(\stdClass $context) { ... }

如果在該事件中拋出異常,則會斷開跟該客戶端的連接。

onClose 事件

該事件在 Socket 或 WebSocket 服務器跟客戶端之間的連接關閉時觸發,該事件的處理函數形式為:

function(\stdClass $context) { ... }

該事件中拋出異常不會對服務器和客戶端有任何影響。

onError 事件

該事件僅被 Hprose\Socket\Server 所支持,其它服務器不支持,該事件在服務器與客戶端發生通訊錯誤,無法將錯誤發送給客戶端時觸發。該事件的處理函數形式為:

function($error, \stdClass $context) { ... }

該事件中拋出異常不會對服務器和客戶端有任何影響。

官方使用手冊地址:https://github.com/hprose/hprose-php/wiki





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM