Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara PHP dan Unity3D menggunakan Workerman untuk melaksanakan fungsi tolak sisi pelayan

Cara PHP dan Unity3D menggunakan Workerman untuk melaksanakan fungsi tolak sisi pelayan

王林
王林asal
2023-07-18 12:01:12889semak imbas

Cara PHP dan Unity3D menggunakan Workerman untuk melaksanakan fungsi tolak sebelah pelayan

Dalam aplikasi rangkaian moden, fungsi tolak sebelah pelayan (Server Push) menunjukkan kuasanya yang berkuasa. Ia boleh menolak maklumat kepada pelanggan dalam masa nyata tanpa pelanggan sentiasa membuat permintaan kepada pelayan. Dalam artikel ini, kami akan membincangkan cara melaksanakan fungsi tolak sisi pelayan menggunakan rangka kerja Workerman menggunakan PHP dan Unity3D.

Workerman ialah rangka kerja pembangunan dipacu acara berprestasi tinggi yang ditulis dalam PHP tulen. Ia memberikan kami pelayan sambungan panjang TCP/UDP, yang boleh melaksanakan fungsi tolakan sebelah pelayan dengan mudah.

Pertama, kita perlu membina pelayan Workerman asas untuk mengendalikan fungsi tolak. Kami mencipta fail bernama PushServer.php dan menambah kod berikut:

require_once __DIR__ . '/vendor/autoload.php';
use WorkermanWorker;
use WorkermanLibTimer;

$pushServer = new Worker();
$pushServer->count = 1;

$pushServer->onWorkerStart = function($pushServer) {
    // 创建一个定时器,每隔一秒向客户端推送消息
    Timer::add(1, function() use ($pushServer) {
        foreach ($pushServer->connections as $connection) {
            $connection->send('推送一条消息');
        }
    });
};

Worker::runAll();

Dalam kod di atas, kami mengimport kelas Workerman yang berkaitan dan mencipta contoh Pekerja bernama $pushServer. Kemudian kami menetapkan bilangan proses untuk contoh ini kepada 1, dan melaksanakan fungsi menolak satu mesej kepada klien setiap saat dalam fungsi panggil balik onWorkerStart.

Seterusnya, kami menggunakan Unity3D untuk mencipta aplikasi klien untuk menerima mesej tolak sebelah pelayan. Kami mencipta adegan baharu dalam Unity3D dan mencipta skrip C# yang dipanggil PushClient.cs dan melampirkannya pada objek permainan dalam adegan kami. Tambahkan kod berikut:

using UnityEngine;
using WebSocketSharp;

public class PushClient : MonoBehaviour
{
    private WebSocket ws;

    void Start()
    {
        // 连接到服务器
        ws = new WebSocket("ws://127.0.0.1:2345");
        ws.Connect();

        ws.OnMessage += (sender, e) =>
        {
            // 接收到服务器推送的消息
            Debug.Log("收到推送消息:" + e.Data);
        };
    }

    private void OnDestroy()
    {
        // 断开与服务器的连接
        ws.Close();
    }
}

Dalam kod di atas, kami telah menggunakan perpustakaan pihak ketiga yang dipanggil WebSocketSharp untuk melaksanakan sambungan WebSocket. Dalam fungsi Mula, kami menyambung ke pelayan di mana PushServer.php terletak dan menetapkan fungsi panggil balik acara OnMessage untuk menerima mesej yang ditolak oleh pelayan. Dalam fungsi OnDestroy, kami memutuskan sambungan daripada pelayan.

Akhir sekali, kami melampirkan skrip PushClient.cs pada objek permainan dalam Unity3D dan menjalankan aplikasi Unity3D. Kemudian, pergi ke direktori di mana PushServer.php terletak di terminal dan jalankan arahan berikut untuk memulakan pelayan Workerman:

php PushServer.php start

Sekarang, apabila kita menjalankan aplikasi Unity3D, kita akan melihat dalam konsol Unity3D bahawa satu mesej diterima daripada pelayan setiap saat Tolak mesej pada terminal.

Dalam artikel ini, kami mempelajari cara melaksanakan fungsi tolak sisi pelayan menggunakan rangka kerja Workerman menggunakan PHP dan Unity3D. Workerman menyediakan kami penyelesaian yang pantas, berprestasi tinggi dan mudah digunakan. Saya berharap melalui pengenalan artikel ini, pembaca akan mempunyai pemahaman tertentu tentang perkara ini dan dapat mengaplikasikannya secara fleksibel dalam projek mereka sendiri.

Atas ialah kandungan terperinci Cara PHP dan Unity3D menggunakan Workerman untuk melaksanakan fungsi tolak sisi pelayan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn