1. 程式人生 > >Centos安裝Swoole擴充套件

Centos安裝Swoole擴充套件

根據Swoole文件,直接install

pecl install swoole

但是報錯,需要root許可權。

sudo su
pecl install swoole

但是提了一個warning

WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update

於是,直接順手update一下吧

pecl channel-update pecl.php.net

查詢下php.ini的位置

php -i |grep php.ini

然後在php.ini中增加

extension=swoole.so

重啟下php

systemctl restart php

檢視下是否已經成功載入了swoole

php -m | grep swoole

Ps:到此swoole擴充套件就安裝完成了,因為我的程式碼執行成功,所以後面的步驟我就沒走下去了,就留給童鞋們自己試咯~

 

Test

新建一個檔案,我命名為SwooleServer.php檔案
程式碼如下:

<?php
//建立websocket伺服器物件,監聽0.0.0.0:9502埠
$ws = new swoole_websocket_server("0.0.0.0", 9502);

//監聽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, "server: {$frame->data}");
});

//監聽WebSocket連線關閉事件
$ws->on('close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
});
$ws->start();
?>

然後建立一個html檔案,用於模擬訪問的Client:

<!DOCTYPE html>  
<meta charset="utf-8" />  
<title>WebSocket Test</title>  
<script language="javascript"type="text/javascript">  
    var wsServer = 'ws://192.168.10.10:9502';
    var websocket = new WebSocket(wsServer);
    websocket.onopen = function (evt) {
        console.log("Connected to WebSocket server.");
    };
    
    websocket.onclose = function (evt) {
        console.log("Disconnected");
    };
    
    websocket.onmessage = function (evt) {
        console.log('Retrieved data from server: ' + evt.data);
    };
    
    websocket.onerror = function (evt, e) {
        console.log('Error occured: ' + evt.data);
    };
</script>  
</html>

啟動服務:

php SwooleServer.php

訪問該Html,在控制檯中可以看到

Connected to WebSocket server.
Retrieved data from server: hello, welcome