Rumah > Artikel > rangka kerja php > Menggunakan WebSocket dalam ThinkPHP6
Dengan perkembangan pesat teknologi Internet mudah alih, permintaan pengguna untuk pemesejan segera dan interaksi masa nyata telah meningkat secara beransur-ansur. Sebagai protokol penting untuk komunikasi masa nyata di Web, protokol WebSocket mempunyai ciri komunikasi dupleks penuh, tolakan masa nyata dan kependaman rendah, dan telah menjadi protokol pilihan dalam senario interaksi masa nyata. Oleh itu, dalam pembangunan web, kita perlu menguasai cara menggunakan WebSocket untuk mencapai komunikasi masa nyata.
Dalam PHP, kami boleh menggunakan sambungan Swoole untuk melaksanakan fungsi WebSocket. Walau bagaimanapun, ia memerlukan banyak masa dan usaha untuk menggunakan dan menyediakan Swoole Bagi sesetengah pembangun yang tidak biasa dengan Swoole, kos pembelajaran juga agak tinggi.
Hari ini, kami akan memperkenalkan cara menggunakan WebSocket dalam ThinkPHP6.
Sebelum menggunakan WebSocket dalam ThinkPHP6, kami perlu memasang sambungan topthink/thinker
.
composer require topthink/thinker:dev-master
topthink/thinker
ialah alat baris arahan untuk menjalankan kod PHP dan mengurus tugas tak segerak dalam ThinkPHP6.
Kami perlu mengkonfigurasi WebSocket dalam fail konfigurasi projek config/socket.php
.
<?php return [ // WebSocket服务器地址,使用内网穿透时填写内网地址 'server' => '127.0.0.1:9501', // WebSocket的应用类,需要实现 hinkworkerServer 接口 'worker_class' => 'appcontrollerWebSocket', ];
Kita perlu menentukan alamat server
dan kelas Server
yang melaksanakan antara muka worker_class
Di sini kita menamakan kelas pengawal yang melaksanakan fungsi WebSocket WebSocket
dan meletakkannya dalam appcontroller
direktori Bawah.
Kami mencipta pengawal bernama appcontroller
dalam direktori WebSocket
dan melaksanakan antara muka Server
dalam pengawal.
<?php namespace appcontroller; use thinkworkerServer; class WebSocket implements Server { protected $socket = 'websocket://127.0.0.1:9501'; public function onMessage($connection, $data) { foreach ($this->worker->connections as $conn) { $conn->send('user ' . $connection->id . ' said: ' . $data); } } public function onConnect($connection) { echo "new connection from ip " . $connection->getRemoteIp() . " "; } public function onClose($connection) { echo "connection closed: " . $connection->id . " "; } public function onWorkerStart($worker) { // 初始化 } }
Dalam kelas pengawal WebSocket
, kita perlu melaksanakan empat kaedah: onMessage
, onConnect
, onClose
dan onWorkerStart
.
onMessage
: Apabila pelanggan menghantar data, kaedah onMessage
akan dicetuskan Parameter $connection
mewakili objek sambungan pelanggan dan $data
mewakili data yang dihantar oleh klien. . onConnect
: Kaedah onConnect
akan dicetuskan apabila klien menyambung. $connection
onClose
akan dicetuskan apabila pelanggan memutuskan sambungan Parameter onClose
mewakili objek sambungan pelanggan. $connection
onWorkerStart
akan dicetuskan apabila proses pekerja dimulakan Parameter onWorkerStart
mewakili objek proses pekerja semasa. $worker
untuk memulakan WebSocket. think
php think worker:startArahan di atas akan memulakan perkhidmatan WebSocket dan mengeluarkan log operasi pada konsol. 5. Test WebSocketSelepas WebSocket dilaksanakan, kami boleh menggunakan klien WebSocket untuk ujian. Kami boleh menggunakan pelayar
dan memasang pemalam Chrome
untuk menguji. Masukkan alamat pelayan WebSocket dalam pemalam dan klik Sambung untuk mula menggunakan komunikasi WebSocket. Simple WebSocket Client
, kita boleh memasukkan aksara dan klik hantar, dan kita boleh melihat log keluaran dalam konsol latar belakang, menunjukkan bahawa komunikasi WebSocket berfungsi seperti biasa. Simple WebSocket Client
Atas ialah kandungan terperinci Menggunakan WebSocket dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!