測試案例:
改寫ws_server.php
$this->ws->set( ????[ ????????'worker_num'?=>?2, ????????'task_worker_num'?=>?2, ????] ); ? $this->ws->on("open",?[$this,?'onOpen']); $this->ws->on("message",?[$this,?'onMessage']); $this->ws->on("task",?[$this,?'onTask']); $this->ws->on("finish",?[$this,?'onFinish']); $this->ws->on("close",?[$this,?'onClose']); ? public?function?onOpen($ws,?$request)?{ ????var_dump($request->fd); } ? public?function?onMessage($ws,?$frame)?{ ????echo?"ser-push-message:{$frame->data}n"; ????$data?=?[ ????????'task'?=>?1, ????????'fd'?=>?$frame->fd, ????]; ????$ws->task($data); ????$ws->push($frame->fd,?"server-push:".date("Y-m-d?H:i:s")); } ? public?function?onTask($serv,?$taskId,?$workerId,?$data)?{ ????print_r($data); ????//?耗時場景?10s ????sleep(10); ????return?"on?task?finish";?//?告訴worker??? } ? ? public?function?onFinish($serv,?$taskId,?$data)?{ ????echo?"taskId:{$taskId}n"; ????echo?"finish-data-sucess:{$data}n"; }
客戶端,即ws_client.html,發送信息,服務端的onMessage接受并執行設置數據調用onTask,在onTask中打印數據3秒后返回數據給onFinish,onFinish接受數據并輸出。
用戶頁面:
nbsp;html> <meta><meta><title></title><h1>chuangxiang--測試</h1> <script> var wsUrl = "ws://192.168.0.103:8812"; var websocket = new WebSocket(wsUrl); //實例對象的onopen屬性 websocket.onopen = function(evt) { websocket.send("Hello chaungxiang");//輸出到服務器端,即發送信息 console.log("connected-swoole-success");//輸出在頁面 } //實例化 onmessage websocket.onmessage = function(evt) { console.log("ws-server-return-data:"+evt.data); } //實例化onclose websocket.onclose = function(evt) { console.log("close"); } //實例化onerror websocket.onerror =function(evt,e) { console.log("error:"+evt.data); } </script>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦