Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript

WBOY
WBOYasal
2023-12-17 09:39:02645semak imbas

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian

Dalam era digital hari ini, semakin banyak perniagaan dan perkhidmatan perlu menyediakan fungsi tempahan dalam talian. Adalah penting untuk melaksanakan sistem tempahan dalam talian yang cekap dan masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian dan memberikan contoh kod khusus.

1. Apakah itu WebSocket
WebSocket ialah protokol untuk komunikasi dupleks penuh pada satu sambungan TCP. Ia boleh mewujudkan sambungan berterusan antara penyemak imbas dan pelayan untuk mencapai komunikasi masa nyata. Berbanding dengan permintaan HTTP tradisional, WebSocket boleh menghantar dan menerima data dengan lebih cepat.

2. Analisis keperluan sampel
Kami mengandaikan bahawa kami sedang membangunkan sistem tempahan dalam talian untuk gim. Pengguna boleh memilih tempoh masa yang sesuai untuk membuat temu janji melalui laman web, dan sistem akan segera memberi maklum balas status tempoh masa yang dipilih kepada pengguna.

Berdasarkan keperluan di atas, kami boleh membahagikan sistem kepada dua peranan: klien dan pelayan. Pelanggan menyediakan antara muka yang boleh dikendalikan pengguna, dan pelayan bertanggungjawab untuk memproses permintaan tempahan pengguna dan menolak status tempahan masa nyata kepada pelanggan.

3. Pelaksanaan pelanggan

  1. Mewujudkan sambungan WebSocket
    Dalam kod JavaScript pada klien, kami perlu menggunakan WebSocket(url) baharu untuk mewujudkan sambungan WebSocket ke pelayan. Di mana url ialah alamat WebSocket pelayan. new WebSocket(url)来建立到服务器的WebSocket连接。其中url为服务端的WebSocket地址。
const socket = new WebSocket("ws://localhost:8080/ws");
socket.addEventListener("open", (event) => {
  console.log("WebSocket连接已建立。");
});

socket.addEventListener("message", (event) => {
  const message = JSON.parse(event.data);
  console.log("收到消息:", message);
});
  1. 处理用户预约请求
    当用户在网页中选择了适当的时间段并点击预约按钮时,我们需要将用户的预约请求发送给服务器。
function bookTimeslot(timeslot) {
  const message = {
    action: "book",
    timeslot: timeslot
  };
  socket.send(JSON.stringify(message));
}
  1. 更新预约状态
    当服务器有新的预约状态时,我们需要更新网页中的状态显示。
function updateTimeslotStatus(timeslot, status) {
  const element = document.getElementById(timeslot);
  element.innerHTML = status;
}
  1. 完整的客户端代码示例
<!DOCTYPE html>
<html>
<head>
  <script>
    const socket = new WebSocket("ws://localhost:8080/ws");
    socket.addEventListener("open", (event) => {
      console.log("WebSocket连接已建立。");
    });

    socket.addEventListener("message", (event) => {
      const message = JSON.parse(event.data);
      console.log("收到消息:", message);
      updateTimeslotStatus(message.timeslot, message.status);
    });

    function bookTimeslot(timeslot) {
      const message = {
        action: "book",
        timeslot: timeslot
      };
      socket.send(JSON.stringify(message));
    }

    function updateTimeslotStatus(timeslot, status) {
      const element = document.getElementById(timeslot);
      element.innerHTML = status;
    }
  </script>
</head>
<body>
  <h1>健身房预约系统</h1>
  
  <h2>可预约时间段:</h2>
  <ul>
    <li id="timeslot1"><button onclick="bookTimeslot('timeslot1')">8:00-9:00</button></li>
    <li id="timeslot2"><button onclick="bookTimeslot('timeslot2')">9:00-10:00</button></li>
    <li id="timeslot3"><button onclick="bookTimeslot('timeslot3')">10:00-11:00</button></li>
  </ul>
</body>
</html>

四、服务器实现
在服务器端,我们需要处理客户端发送的预约请求,并根据系统状态更新预约状态。同时,服务器还需要将新的预约状态发送给客户端。

  1. 创建WebSocket服务器
    在Node.js环境下,我们可以使用ws
  2. const WebSocket = require('ws');
    const wss = new WebSocket.Server({ port: 8080 });
    
    const timeslots = {
      timeslot1: "可预约",
      timeslot2: "可预约",
      timeslot3: "可预约"
    };
    
    wss.on('connection', (ws) => {
      ws.on('message', (message) => {
        const data = JSON.parse(message);
        if (data.action === "book") {
          if (timeslots[data.timeslot] === "可预约") {
            timeslots[data.timeslot] = "已预约";
            ws.send(JSON.stringify({
              timeslot: data.timeslot,
              status: timeslots[data.timeslot]
            }));
          }
        }
      });
    
      ws.send(JSON.stringify(timeslots));
    });
    Memproses permintaan temu janji pengguna
  1. Apabila pengguna memilih tempoh masa yang sesuai dalam halaman web dan mengklik butang janji temu, kami perlu menghantar permintaan temu janji pengguna ke pelayan.
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

const timeslots = {
  timeslot1: "可预约",
  timeslot2: "可预约",
  timeslot3: "可预约"
};

wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    const data = JSON.parse(message);
    if (data.action === "book") {
      if (timeslots[data.timeslot] === "可预约") {
        timeslots[data.timeslot] = "已预约";
        ws.send(JSON.stringify({
          timeslot: data.timeslot,
          status: timeslots[data.timeslot]
        }));
      }
    }
  });

  ws.send(JSON.stringify(timeslots));
});

    Kemas kini status tempahan
    Apabila pelayan mempunyai status tempahan baharu, kami perlu mengemas kini paparan status di halaman web. . status. Pada masa yang sama, pelayan juga perlu menghantar status tempahan baharu kepada pelanggan.

    🎜🎜Buat pelayan WebSocket🎜Dalam persekitaran Node.js, kita boleh menggunakan modul ws untuk mencipta pelayan WebSocket. 🎜🎜rrreee🎜🎜Contoh kod pelayan lengkap🎜🎜rrreee🎜 5. Ringkasan🎜Artikel ini memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian, dan menyediakan contoh kod sisi klien dan pelayan yang lengkap. Dengan menggunakan WebSocket untuk mencapai komunikasi masa nyata, kami boleh melaksanakan sistem tempahan dalam talian yang lebih cekap dan masa nyata. Ia juga boleh digunakan dalam senario lain yang memerlukan komunikasi masa nyata. Saya harap artikel ini akan membantu pembangunan projek anda! 🎜

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript. 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