Rumah rangka kerja php Workerman Amalan pengaturcaraan rangkaian pekerja: membina pelayan permainan masa nyata yang cekap

Amalan pengaturcaraan rangkaian pekerja: membina pelayan permainan masa nyata yang cekap

Aug 04, 2023 pm 05:21 PM
pekerja (rangka kerja pengaturcaraan rangkaian) Cekap (pengoptimuman prestasi)

Amalan Pengaturcaraan Rangkaian Pekerja: Membina Pelayan Permainan Masa Nyata yang Cekap

Pengenalan:
Dengan peningkatan permainan masa nyata, membina pelayan rangkaian yang cekap dan boleh dipercayai telah menjadi keutamaan utama bagi pembangun permainan. Dalam artikel ini, kami akan menggunakan Workerman, rangka kerja pengaturcaraan rangkaian PHP yang sangat baik, untuk memperkenalkan cara membina pelayan permainan masa nyata yang cekap untuk memenuhi keperluan pembangunan permainan. Kami akan menerangkan secara terperinci cara untuk membangunkan dengan Workerman dan melampirkan beberapa contoh kod untuk rujukan.

1. Pengenalan kepada Workerman
Workerman ialah rangka kerja pengaturcaraan rangkaian berbilang benang sumber terbuka yang digunakan khas untuk membina pelayan dan aplikasi rangkaian berprestasi tinggi. Berbanding dengan model pembangunan PHP tradisional, Workerman mempunyai keupayaan pemprosesan serentak yang lebih tinggi dan kependaman tindak balas yang lebih rendah. Ia berdasarkan konsep reka bentuk dipacu peristiwa dan mencapai komunikasi rangkaian yang cekap melalui kaedah IO dan pelbagai proses tanpa sekatan.

2. Pasang dan konfigurasikan Workerman
Pertama, kita perlu memasang Workerman. Jalankan arahan berikut dalam baris arahan untuk memasang:

1

composer require workerman/workerman

Salin selepas log masuk

Selepas pemasangan selesai, kami boleh mula menulis pelayan permainan segera kami.

3 Tulis pelayan permainan
Kami mula-mula mencipta fail bernama GameServer sebagai fail kemasukan pelayan permainan kami. Dalam fail ini, kami perlu memperkenalkan skrip pemuatan automatik Workerman dan kod logik permainan yang kami tulis sendiri. Butirannya adalah seperti berikut:

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

30

31

32

33

34

35

36

// 引入Workerman的自动加载脚本

require_once __DIR__.'/vendor/autoload.php';

 

use WorkermanWorker;

 

// 创建一个Worker监听2345端口,使用websocket协议通讯

$worker = new Worker('websocket://0.0.0.0:2345');

 

// 设置进程数,根据系统性能调整

$worker->count = 4;

 

// 当客户端连接时触发的回调函数

$worker->onConnect = function($connection)

{

    echo "New connection

";

};

 

// 当客户端发送消息时触发的回调函数

$worker->onMessage = function($connection, $data)

{

    // 处理客户端消息,进行游戏逻辑处理

    // ...

    // 发送游戏结果给客户端

    $connection->send($result);

};

 

// 当客户端断开连接时触发的回调函数

$worker->onClose = function($connection)

{

    echo "Connection closed

";

};

 

// 运行Worker

Worker::runAll();

Salin selepas log masuk

Kod di atas mencipta objek Worker, mendengar port 2345 dan mengendalikan sambungan pelanggan, mesej dan peristiwa pemutusan sambungan. Kami boleh mengendalikan mesej pelanggan dalam fungsi panggil balik onMessage dan menghantar keputusan permainan kepada pelanggan.

4 Mulakan pelayan permainan
Selepas menulis kod pelayan permainan, kita boleh menggunakan baris arahan untuk memulakan pelayan:

1

php GameServer

Salin selepas log masuk

5. Sekarang, kita boleh menulis halaman HTML yang ringkas sebagai permainan pelanggan, Dan gunakan WebSocket untuk sambungan pelayan dan pemesejan. Berikut ialah contoh kod mudah:

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

30

31

32

33

34

35

36

37

38

39

40

41

<!DOCTYPE html>

<html>

<head>

    <title>Game Client</title>

    <style type="text/css">

        #message {

            width: 300px;

            height: 200px;

            overflow: auto;

        }

    </style>

</head>

<body>

    <div id="message"></div>

    <input type="text" id="input" placeholder="输入消息">

    <button onclick="sendMessage()">发送</button>

</body>

<script>

    // 创建WebSocket对象

    var socket = new WebSocket('ws://localhost:2345');

 

    // 监听连接建立事件

    socket.onopen = function() {

        console.log('Connected');

    }

 

    // 监听服务器发送的消息事件

    socket.onmessage = function(e) {

        var messageDiv = document.getElementById('message');

        messageDiv.innerHTML += e.data + '<br>';

    }

 

    // 发送消息到服务器

    function sendMessage() {

        var input = document.getElementById('input');

        var message = input.value;

        socket.send(message);

        input.value = '';

    }

</script>

</html>

Salin selepas log masuk
Kod di atas mencipta objek WebSocket, menyambung ke pelayan kami dan mendengar acara mesej yang dihantar oleh pelayan. Melalui kotak input dan butang hantar, kami boleh menghantar mesej ke pelayan dan memaparkan mesej yang diterima pada halaman.

6. Ringkasan

Melalui pengenalan artikel ini, kami telah mempelajari cara menggunakan rangka kerja Workerman untuk membina pelayan permainan masa nyata yang cekap. Workerman secara berkesan meningkatkan keupayaan pemprosesan serentak pelayan dan kelajuan tindak balas melalui mekanisme komunikasi rangkaian berprestasi tingginya. Kami telah menyediakan beberapa contoh kod ringkas dalam artikel untuk rujukan anda. Saya harap artikel ini dapat membantu pembangun yang sedang membangunkan pelayan permainan masa nyata, mempercepatkan proses pembangunan permainan dan meningkatkan pengalaman pengguna permainan.

Atas ialah kandungan terperinci Amalan pengaturcaraan rangkaian pekerja: membina pelayan permainan masa nyata yang cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)