首頁 >php框架 >Swoole >swoole如何打開ws

swoole如何打開ws

(*-*)浩
(*-*)浩原創
2019-12-16 10:22:432692瀏覽

swoole如何打開ws

WebSocket(ws)是html5新增加的一種通訊協議,目前流行的瀏覽器都支援這個協議,例如Chrome,Safrie,Firefox,Opera ,IE等等,對該協議支持最早的應該是chrome,從chrome12就已經開始支持,隨著協議草案的不斷變化,各個瀏覽器對協議的實現也在不停的更新。 (推薦學習: swoole視訊教學

swoole 1.7.9增加了內建的WebSocket伺服器支持,透過幾行PHP程式碼就可以寫出一個非同步非阻塞多進程的WebSocket伺服器。

$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);
$server->on('open', function (Swoole\WebSocket\Server $server, $request) {
    echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (Swoole\WebSocket\Server $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
    $server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});
$server->start();

WebSocket伺服器除了接收Swoole\Server和Swoole\Http\Server基底類別的回呼函數外,額外增加了3個回呼函數設定。 其中:

onMessage回呼函數為必選

onOpen和onHandShake回呼函數為可選

WebSocket\Server是Server的子類,因此可以呼叫Server的全部方法。

需要注意WebSocket伺服器向客戶端發送資料應使用WebSocket\Server::push方法,此方法會進行WebSocket協定打包。而Server::send方法是原始的TCP發送介面。

WebSocket\Server::disconnect方法可以從服務端主動關閉一個WebSocket連接,可以指定狀態碼(根據WebSocket協議,可使用的狀態碼為十進制的一個整數,取值可以是1000或4000 -4999)和關閉原因(採用utf-8編碼、位元組長度不超過125的字串)。

在未指定情況下狀態碼為1000,關閉原因為空

以上是swoole如何打開ws的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多