swoole實現websocket推送

2021-08-09 19:23:14 字數 2199 閱讀 4918

環境配置:

swoole 1.9.3、centos6.5(虛擬機器)、php7.01

思路:

①通過server中的collections取出fd

②寫乙個

admin.html(管理員推送頁面) 與

client.html(客戶端),html頁面的websocket自行可編寫

並在server.php中message事件用迴圈push資料(server中的collections取出fdfd組)    

[php]view plain

copy

$serv->on('message', function ($server, $frame) :".$frame->data);  

}  }  

});  

注:其實這裡需要admin.html傳送資料時傳token並在message事件中驗證是否管理員請求(資料庫操作),是才執行推送,否則不做操作

server.php**如下:

[php]view plain

copy

<?php   

$serv = new swoole\websocket\server("0.0.0.0", 9502);  

$serv->on('open', function ($server, $req) );  

$serv->on('message', function ($server, $frame) :".$frame->data);  

}  }  

});  

$serv->on('close', function ($server, $fd) );  

$serv->start();  

效果圖:

注:客戶端websocket自行編寫。

上面推送小例項實現中有點問題,並未將客戶端與服務端分離開來,以下分離開。

因為swoole_websocket_server 繼承自 swoole_http_server,所以可在websocket中用request事件,另外用global引入用於在request事件中push

①首先admin.html改為http請求,且client.html保持不變

②將message事件的push部分刪掉,如下:

[php]view plain

copy

$serv->on('message', function ($server, $frame) use($redis) );  

③新增http的request事件,如下:

[php]view plain

copy

//服務端請求更新資料,這裡是http方式

$serv->on('request', function ($req, $respone) :".$req->post["test"]);  

}  $respone->end("success");  

}  }); 

wireshark如何抓取WebSocket資料報

websocket目前在web端使用廣泛,可以使用websocket來傳輸資料,解決了web端無法跟伺服器維持高效的長鏈結的問題。什麼是websocket呢?websocket是一種瀏覽器與伺服器進行全雙工通訊的應用層協議。它基於 tcp 傳輸協議,並復用 http 的握手通道,可以在瀏覽器裡使用,...

簡單嘗試 express 使用 websocket

node 使用 express 框架 先安裝 express 和 express ws yarn add express express ws服務端server.js var express require express var expressws require express ws expre...

Swoole多程序的實現

使用swoole多程序上傳檔案到網宿伺服器 created by phpstorm.user leeo date 2016 9 29 time 15 26 引入檔案上傳類include once filehandleclass.php obj fetch new filehandleclass wo...