phpsocket.io使用

安裝

請使用composer集成phpsocket.io

composer require workerman/phpsocket.io

腳本中引用vendor中的autoload.php實現SocketIO相關類的加載。例如

require_once ‘/你的vendor路徑/autoload.php’;

服務端和客戶端連接

創建一個SocketIO服務端

項目根目錄創建start.php文件

<?php
require_once __DIR__.'/vendor/autoload.php';
use Workerman\Worker;
use PHPSocketIO\SocketIO;

$io =new SocketIO(3120);

$io->on('connection',function ($scoket)use($io){
echo "connection success".PHP_EOL;
});
Worker::runAll();

客戶端

引入socket.io.js

<input type="text" value="" id="text">
<button id="tt">點擊</button>
<script src="jquery.min.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js'></script>
<script>
    $(function () {
        var socket= io('http://127.0.0.1:3120');
        socket.on('connect',function(){
                alert(123)
        })
    })
</script>
  • 啓動服務端

php start.php
在這裏插入圖片描述
在這裏插入圖片描述

自定義事件

socket.io主要是通過事件來進行通訊交互的
socket連接除了自帶的connect,message,disconnect三個事件以外,在服務端和客戶端開發者可以自定義其它事件
服務端和客戶端都通過emit方法觸發對端的事件
例如我們綁定一個say事件

服務端

<?php
require_once __DIR__.'/vendor/autoload.php';
use Workerman\Worker;
use PHPSocketIO\SocketIO;

$io =new SocketIO(3120);

$io->on('connection',function ($scoket)use($io){
    $scoket->on('say',function ($say)use($io){
       $io->emit('say','接收到:'.$say);
    });
});
Worker::runAll();

客戶端

<script src="jquery.min.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js'></script>
<script>
    $(function () {
        var socket= io('http://127.0.0.1:3120');
       socket.emit('say','hello world')
        socket.on('say',function (say) {
            alert(say)
        })
    })
</script>

在這裏插入圖片描述

$io是SocketIO對象。$socket是客戶端連接
$data可以是數字和字符串,也可以是數組。當$data是數組時,客戶端會自動轉換爲javascript對象。
同理如果客戶端向服務端emit某個事件傳遞的是一個javascript對象,在服務端接收時會自動轉換爲php數組。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章