前言 ThinkPHP即將迎來最新版本6.0,針對目前越來越流行Swoole,thinkphp也推出了最新的擴展think-swoole 3.0。 介紹 即將推出的tp6.0,已經適配swoole.並推出think-swoole 3.0,並且預設適配了socketio。和2.0版本在使用方法上面有些 ...
前言
ThinkPHP即將迎來最新版本6.0,針對目前越來越流行Swoole,thinkphp也推出了最新的擴展think-swoole 3.0。
介紹
即將推出的tp6.0,已經適配swoole.並推出think-swoole 3.0,並且預設適配了socketio。和2.0版本在使用方法上面有些許不同。
Websocket 繼承與Http,進行websocket連接之前需要一次HTTP請求,如果當期地址支持websocket則返回101,然後進行連接。也就是說並不是我的服務支持websocket後,請求每個連接地址都可以進行websocket連接,而是需要預先適配才可以連接。
參數配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
handler和parser大大方便了自定義websocket服務,預設系統集成socketio。
本文主要介紹如何使用socketio,這裡假設大家有socketio有一定瞭解和使用基礎。
socketIo預設會在請求地址後加相應的參數
同時,socketio預設情況下,會認為 http://url/socket.io/ 是支持websocket服務的地址。
而在tp-swoole3.0內部已經對該地址請求進行了處理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
TP6.0,插件註冊採用了service方式進行了註冊,可在tp-swoole 服務註冊文件中查看路由註冊信息,如果想自定義鏈接規則,則可以覆蓋該路由。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
Socketio預設使用demo
1 2 3 4 5 6 7 |
|
Websocket路由配置方法
在app目錄下新建websocket.php文件,其中需要註意,由於使用了反射,閉包參數名稱不能隨意定義,不然無法註入。第一個參數是websocket,是當前websocket的Server對象,第二個參數data是客戶端發送的數據。其中socketio emit的第一個參數和Websocket::on的第一個參數一致,作為事件名稱。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
參考如上方法即可使用全新的websocket服務。當然tp-swoole3.0同樣還有許多其他的新功能,這些功能需要大家去摸索嘗試。
我也會在接下來的文章中,一起與大家分享我的使用過程。