Rumah >pembangunan bahagian belakang >tutorial php >Kes aplikasi WebSocket dalam pembangunan permainan masa nyata

Kes aplikasi WebSocket dalam pembangunan permainan masa nyata

PHPz
PHPzasal
2023-10-15 09:59:001883semak imbas

Kes aplikasi WebSocket dalam pembangunan permainan masa nyata

Kes aplikasi WebSocket dalam pembangunan permainan masa nyata

Pengenalan:
Dengan pembangunan berterusan teknologi rangkaian, permintaan untuk permainan masa nyata juga semakin meningkat. Protokol HTTP tradisional selalunya tidak dapat memenuhi keperluan kedekatan dan prestasi masa nyata dalam senario permainan masa nyata. Sebagai protokol komunikasi yang baru muncul, WebSocket telah digunakan secara meluas dalam pembangunan permainan masa nyata. Artikel ini akan menggunakan kes tertentu dan kod sampel untuk meneroka aplikasi WebSocket dalam pembangunan permainan masa nyata.

1. Apakah itu WebSocket
WebSocket ialah protokol komunikasi dupleks penuh berdasarkan TCP, yang membolehkan penubuhan sambungan berterusan antara pelayan dan pelanggan dan membolehkan komunikasi masa nyata dua hala. Tidak seperti protokol HTTP, WebSocket boleh menghantar data dalam kedua-dua arah antara pelayan dan klien melalui sambungan berterusan, tanpa perlu menutup sambungan selepas setiap permintaan seperti HTTP.

2. Keperluan WebSocket dalam permainan masa nyata
Permainan masa nyata mempunyai ciri konkurensi tinggi dan masa nyata yang tinggi Pemain perlu menerima operasi pemain lain dalam masa nyata dan boleh menghantar operasi mereka sendiri dalam masa nyata. Protokol HTTP tradisional tidak dapat memenuhi keperluan masa nyata ini, jadi WebSocket perlu digunakan untuk mencapai komunikasi masa nyata dalam permainan masa nyata.

3. Kes aplikasi WebSocket dalam permainan masa nyata
Ambil "Permainan Menembak Pertempuran Berbilang Pemain" sebagai contoh untuk menggambarkan aplikasi WebSocket dalam permainan masa nyata.

  1. Pemain memasuki bilik permainan
    Apabila pemain memasuki bilik permainan, mereka perlu mewujudkan sambungan WebSocket dengan pelayan. Selepas menerima permintaan sambungan, pelayan menyimpan maklumat sambungan WebSocket pemain untuk komunikasi masa nyata berikutnya.

Contoh kod:

// 客户端代码
const socket = new WebSocket('ws://localhost:8080/game');

socket.onopen = function() {
  console.log('WebSocket连接成功');
};

socket.onmessage = function(event) {
  console.log('收到服务器消息:', event.data);
};

socket.onclose = function(event) {
  console.log('WebSocket连接关闭');
};
# 服务器端代码(Node.js)
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  console.log('有新的WebSocket连接');

  ws.on('message', function incoming(message) {
    console.log('收到客户端消息:', message);
  });

  ws.on('close', function close() {
    console.log('WebSocket连接关闭');
  });
});
  1. Terima operasi daripada pemain lain
    Apabila pemain lain menghantar operasi dalam bilik permainan, selepas pelayan menerima operasi pemain, ia perlu menghantar maklumat operasi kepada pemain lain dalam masa nyata.

Contoh kod:

// 客户端代码
socket.onmessage = function(event) {
  console.log('收到服务器消息:', event.data);

  // 处理其他玩家的操作
  handleOtherPlayerAction(event.data);
};
// 服务器端代码
wss.on('connection', function connection(ws) {
  // ...

  ws.on('message', function incoming(message) {
    console.log('收到客户端消息:', message);

    // 处理玩家的操作
    handlePlayerAction(message);

    // 将其他玩家的操作信息广播给所有连接的WebSocket客户端
    wss.clients.forEach(function each(client) {
      if (client !== ws && client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });

  // ...
});
  1. Hantar operasi anda sendiri
    Apabila pemain melakukan operasi dalam permainan, dia perlu menghantar maklumat operasi ke pelayan, dan pelayan kemudian menyiarkan maklumat operasi kepada pemain lain.

Contoh kod:

// 客户端代码
function sendAction(action) {
  socket.send(action);
}

// 玩家按下射击按钮时发送射击动作
shootButton.addEventListener('click', function() {
  sendAction('shoot');
});
// 服务器端代码
// ...

ws.on('message', function incoming(message) {
  // ...
  
  // 将其他玩家的操作信息广播给所有连接的WebSocket客户端
  wss.clients.forEach(function each(client) {
    if (client !== ws && client.readyState === WebSocket.OPEN) {
      client.send(message);
    }
  });
});

// ...

4. Ringkasan
WebSocket, sebagai protokol yang menyokong komunikasi dupleks penuh, mempunyai pelbagai aplikasi dalam pembangunan permainan masa nyata. Melalui WebSocket, pemain boleh menerima operasi pemain lain dan menghantar operasi mereka sendiri dalam masa nyata, merealisasikan keperluan komunikasi masa nyata dalam permainan masa nyata. Artikel ini mengambil "Permainan Menembak Pertempuran Berbilang Pemain" sebagai contoh untuk menunjukkan aplikasi WebSocket dalam pembangunan permainan masa nyata dan menyediakan contoh kod yang sepadan. Saya berharap melalui pengenalan artikel ini, pembaca dapat lebih memahami dan menggunakan peranan WebSocket dalam pembangunan permainan masa nyata.

Atas ialah kandungan terperinci Kes aplikasi WebSocket dalam pembangunan permainan masa nyata. 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