
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
- 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)
來建立到服務(wù)器的WebSocket連接。其中url
為服務(wù)端的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);
});
- 處理用戶預(yù)約請(qǐng)求
當(dāng)用戶在網(wǎng)頁(yè)中選擇了適當(dāng)?shù)臅r(shí)間段并點(diǎn)擊預(yù)約按鈕時(shí),我們需要將用戶的預(yù)約請(qǐng)求發(fā)送給服務(wù)器。
function bookTimeslot(timeslot) {
const message = {
action: "book",
timeslot: timeslot
};
socket.send(JSON.stringify(message));
}
- 更新預(yù)約狀態(tài)
當(dāng)服務(wù)器有新的預(yù)約狀態(tài)時(shí),我們需要更新網(wǎng)頁(yè)中的狀態(tài)顯示。
function updateTimeslotStatus(timeslot, status) {
const element = document.getElementById(timeslot);
element.innerHTML = status;
}
- 完整的客戶端代碼示例
<!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>健身房預(yù)約系統(tǒng)</h1>
<h2>可預(yù)約時(shí)間段:</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>
四、服務(wù)器實(shí)現(xiàn)
在服務(wù)器端,我們需要處理客戶端發(fā)送的預(yù)約請(qǐng)求,并根據(jù)系統(tǒng)狀態(tài)更新預(yù)約狀態(tài)。同時(shí),服務(wù)器還需要將新的預(yù)約狀態(tài)發(fā)送給客戶端。
- 創(chuàng)建WebSocket服務(wù)器
在Node.js環(huán)境下,我們可以使用ws
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
const timeslots = {
timeslot1: "可預(yù)約",
timeslot2: "可預(yù)約",
timeslot3: "可預(yù)約"
};
wss.on('connection', (ws) => {
ws.on('message', (message) => {
const data = JSON.parse(message);
if (data.action === "book") {
if (timeslots[data.timeslot] === "可預(yù)約") {
timeslots[data.timeslot] = "已預(yù)約";
ws.send(JSON.stringify({
timeslot: data.timeslot,
status: timeslots[data.timeslot]
}));
}
}
});
ws.send(JSON.stringify(timeslots));
});
Memproses permintaan temu janji pengguna- 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: "可預(yù)約",
timeslot2: "可預(yù)約",
timeslot3: "可預(yù)約"
};
wss.on('connection', (ws) => {
ws.on('message', (message) => {
const data = JSON.parse(message);
if (data.action === "book") {
if (timeslots[data.timeslot] === "可預(yù)約") {
timeslots[data.timeslot] = "已預(yù)約";
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!