簡單記錄一下 laravel-swoole 的基本使用

Steven1998發表於2020-08-04

歡迎閱讀.

起步

先安裝swoole擴充套件,這個沒啥好說的

composer require swooletw/laravel-swoole,安裝包

php artisan vendor:publish --tag=laravel-swoole 釋出資源

.env 檔案後面加上

SWOOLE_HTTP_WEBSOCKET=true # 開啟websocket服務

第二步,開啟服務

php artisan swoole:http start 開啟服務

簡單記錄一下 laravel-swoole 的基本使用

routes/websocket.php 檔案

Websocket::on('connect', function ($websocket, Request $request) {
  // called while socket on connect
  $websocket->emit('我是伺服器這邊連結成功的訊息.', [123]);
});

Websocket::on('disconnect', function ($websocket) {
  // called while socket on disconnect
  $websocket->emit('你已經斷開連結.', [123]);
});

Websocket::on('example', function ($websocket, $data) {
  $websocket->broadcast()->emit('example', 'this is a test');
});

前端Js檔案

index.html新增程式碼,這個是vue中拷出來的程式碼,相信轉換成普通的js對於大家來說還是沒問題的。

<script>
data() {

    return {

        path:  "ws://127.0.0.1:1215", // 和上面開啟的連結是一樣的,只是換了ws協議

        socket:  ""

    };

},
if (typeof WebSocket === "undefined") {
        alert("您的瀏覽器不支援socket");
} else {
        // 例項化socket
        this.socket = new WebSocket(this.path);
        // 監聽socket連線
        this.socket.onopen = this.open;
        // 監聽socket錯誤資訊
        this.socket.onerror = this.error;
        // 監聽socket訊息
        this.socket.onmessage = this.getMessage;
}

open: function() {
      console.log("socket連線成功");
      this.send('["example",[1]]');  // 發個訊息 格式預設規定是這樣的
},
error: function() {
       console.log("連線錯誤");
},
getMessage: function(msg) {
      console.log("收到伺服器資訊" + msg.data);
}
send: function(params) {
      this.socket.send(params);
},
</script>

效果

客戶端1:
簡單記錄一下 laravel-swoole 的基本使用

客戶端2:

簡單記錄一下 laravel-swoole 的基本使用

結語

至於有人想問,如果伺服器推送資訊怎麼弄,這個我的思路是用伺服器模擬一個客戶端傳送,然後在swoole進行廣播。
模擬websocket客服端傳送的話:textalk/websocket 包可以幫到你。

至於如果想實現一個簡單的IM功能的話,可以看看文件【文件地址】,都有很多基本的方法提供,我想實現起來應該不難。有興趣的話大家可以做一下。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章