標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2019年4月11日 星期四

利用 swoole 架設 websocket 簡單範例

資料來源1 開始實作。
老實說,很多程式碼看不懂,只是造本宣科而已。但還是將之記錄起來,至少是寫給自己看。
分成兩台。分成Server端與Client端。Server端IP:192.168.32.106,Client端IP:192.168.32.182
兩端檔案位置均放置在 /home/webadmin/html/ 下

1.首先是Server端,檔名為 swoole.php
<?php
// 建立 websocket 物件,監聽 192.168.32.106:8080 連接埠
$ws = new swoole_websocket_server("192.168.32.106", 8080);

// 監聽 WebSocket 連接打開事件
$ws->on('open', function ($ws, $request) {
    var_dump($request->fd, $request->get, $request->server);
    $ws->push($request->fd, "hello, welcome\n");
});

// 監聽 WebSocket 訊息事件
$ws->on('message', function ($ws, $frame) {
    echo "Message: {$frame->data}\n";
    $ws->push($frame->fd, $frame->data);
});

// 今天 WebSocket 連接關閉事件
$ws->on('close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
});

$ws->start();
?>
2.程式碼完成後,在command line 打上
$php swoole.php
然後等待 client 端來接

3.接下來是 Client端,檔名為 client_swoole.html
<html>
<head>
    <title> client swoole test</title>
    <script>
        var wsServer = 'ws://192.168.32.106:8080';
        var websocket = new WebSocket(wsServer);
        websocket.onopen = function (evt) {
            console.log("Success to connect WebSocket Server");
        };
        websocket.onclose = function (evt) {
          console.log("Closed to connect WebSocket Server");
        };
        websocket.onmessage = function (evt) {
            console.log('The message which is recived  from the WebSocket Server is the: ' + evt.data);
        };
        websocket.onerror = function (evt,e) {
            console.log('Error: ' + evt.data);
        }
    </script>
</head>
<body>
</body>
</html>

4.程式碼打完,用瀏覽器開啟。

5.Server端的command line 會出現

6.Client端瀏覽器為chrome,利用開發人員工具,來看一些訊息

7.如何關閉Server端的服務
   開新的終端機,下指令
$ps -fC php
然後接著下
$kill 7070
就會出現訊息:
[2019-04-11 22:34:43 #7070.4] INFO Server is shutdown now


資料來源
1.php – swoole – 架設 websocket 簡單範例

沒有留言:

張貼留言

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html