Real-time messaging နည်းပညာသည်ဝက်ဘ်ဆိုက်များနှင့်အက်ပလီကေးရှင်းများကိုပိုမိုထိရောက်သောအသုံးပြုသူအပြန်အလှန်အတွေ့အကြုံရရှိရန်ကူညီနိုင်သည်။ ဥပမာအားဖြင့်အသုံးပြုသူများသည်အွန်လိုင်းဖောက်သည် 0 န်ဆောင်မှု, chat room or Time Real-time notification system ကိုအသုံးပြုသောအခါ၎င်းတို့သည်ဆာဗာမှမက်ဆေ့ခ်ျများကိုအမြန်ဆုံးလက်ခံရရှိရန်လိုအပ်သည်။ ကွန်ရက်စာမျက်နှာများသည်လက်ရှိအချိန်မှန်ဆက်သွယ်ရေးနည်းပညာသည်အဓိကအားဖြင့်အချိန်မှန်ဆက်သွယ်ရေးနည်းပညာဖြစ်သည်။
မက်ဆေ့ခ်ျပို့ရန်သော့ချက်သည် client နှင့် server အကြားစဉ်ဆက်မပြတ်ဆက်သွယ်မှုကိုထိန်းသိမ်းရန်ဖြစ်သည်။ ရိုးရာ HTTP ဆက်သွယ်ရေးဆိုသည်မှာတစ်လမ်းတည်းတောင်းဆိုမှုတုန့်ပြန်မှုတစ်ခုဖြစ်သည်။
ရှည်လျားသောစစ်တမ်းကောက်ယူမှု၏ဆက်သွယ်ရေးလုပ်ငန်းစဉ်ကိုအောက်ပါအဆင့်များခွဲခြားနိုင်သည်။
မက်ဆေ့ခ်ျများသိုလှောင်ရန်အတွက်ဒေတာဘေ့စ်စားပွဲတစ်ခုကိုကျွန်ုပ်တို့ပထမ ဦး ဆုံးဒီဇိုင်းပြုလုပ်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်အောက်ပါ "မက်ဆေ့ခ်ျများ" ဇယားကိုသင်ဖန်တီးနိုင်သည်။
CREATE TABLE messages (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
content VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ရှေ့ပြေးစာမျက်နှာသည်တွန်းအားပေးသည့်အချိန်မှန်သတင်းများကိုပြသရန်အသုံးပြုသည်။
<!DOCTYPE html>
<html>
<head>
<title>အချိန်နှင့်တပြေးညီသတင်းစကားကိုတွန်းပါ</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<div id="messages"></div>
</body>
</html>
Backend PHP Code သည်အချိန်ကြာမြင့်စွာ 0 တ်ဆန်သည့်ယုတ္တိဗေဒနှင့်ဒေတာတုန့်ပြန်မှုကိုကိုင်တွယ်ရန်တာ 0 န်ရှိသည်။ ရှေ့တန်းမှစတင်သောတောင်းဆိုမှုများကိုကိုင်တွယ်ရန် Index.php အမည်ရှိဖိုင်ကိုကျွန်ုပ်တို့ဖန်တီးနိုင်သည်။
<?php
// ဒေတာဘေ့စ်ဆက်သွယ်မှု
$conn = new mysqli("localhost", "အသုံးပြုသူ", "လှျို့ဝှက်စကား", "ဒေတာဘေ့စ်အမည်");
if ($conn->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $conn->connect_error);
}
// နောက်ဆုံးသောကာလကိုလက်ခံရရှိနောက်ဆုံးမက်ဆေ့ခ်ျကိုရယူပါID
$lastId = isset($_GET['last_id']) ? intval($_GET['last_id']) : 0;
$timeout = 30; // အများစုမှာစောင့်ပါ30စက်ဏန့်
$startTime = time();
while (true) {
$sql = "SELECT * FROM messages WHERE id > $lastId ORDER BY id ASC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$messages = [];
while($row = $result->fetch_assoc()) {
$messages[] = $row;
}
echo json_encode(["status" => "success", "data" => $messages]);
break;
} else {
// အခြားတိုင်း1စက်ဏန့်检查一次是否有新消息,အလွန်အကျွံဆာဗာဖိအားကိုရှောင်ကြဉ်ပါ
sleep(1);
}
if ((time() - $startTime) > $timeout) {
echo json_encode(["status" => "timeout", "data" => []]);
break;
}
}
$conn->close();
?>
let lastId = 0;
function fetchMessages() {
$.ajax({
url: 'index.php',
type: 'GET',
data: { last_id: lastId },
success: function(response) {
if (response.status === 'success') {
response.data.forEach(function(msg) {
$('#messages').append('<p>' + msg.content + '</p>');
lastId = msg.id;
});
}
fetchMessages();
},
error: function() {
setTimeout(fetchMessages, 3000);
}
});
}
$(document).ready(function() {
fetchMessages();
});
အထက်ပါနည်းလမ်းများမှတဆင့် PHP နှင့် Long Polling Technology ကို အသုံးပြု. အခြေခံအချိန်နှင့်တပြေးညီ Messaging System ကိုအောင်မြင်စွာတည်ဆောက်ခဲ့သည်။ ဤဖြေရှင်းချက်သည်ကောင်းမွန်သောသဟဇာတဖြစ်မှုနှင့်ဖွံ့ဖြိုးမှုနိမ့်ကျမှုတံခါးခုံများရှိသည်။ ၎င်းသည်အချိန်မှန်စွမ်းဆောင်ရည်နိမ့်သောစွမ်းဆောင်ရည်နည်းသော application scarios ကိုကျင့်သုံးရန်အတွက်လိုအပ်သောအရာတစ်ခုဖြစ်သည်။ သို့သော်အချိန်မီပြန်လည်တုံ့ပြန်ချက်လိုအပ်သည်။