AJAX Auto Load
Message Page Auto Load - সম্পূর্ণ ডকুমেন্টেশন ও লাইভ ডেমো
Real-time Auto Load
Message Auto Refresh
No Page Reload
Message Auto Load কি?
Message Page Auto Load হল এমন একটি টেকনিক যেখানে পেজ রিলোড ছাড়াই স্বয়ংক্রিয়ভাবে নতুন মেসেজ লোড হয়। এটি চ্যাট অ্যাপ, নোটিফিকেশন সিস্টেম, লাইভ ফিডের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Auto Load পদ্ধতি সমূহ
| পদ্ধতি | বিবরণ | সেরা ব্যবহার |
|---|---|---|
| Page Load | পেজ ওপেন হলে ডাটা লোড | ইনিশিয়াল ডাটা |
| Polling | নির্দিষ্ট সময় পর পর চেক | চ্যাট, নোটিফিকেশন |
| Infinite Scroll | স্ক্রোল করলে লোড | ফিড, টাইমলাইন |
| WebSocket | রিয়েল-টাইম পুশ | লাইভ চ্যাট, গেম |
Page Load Auto Load
JavaScript (Vanilla)
// পেজ লোড হলে স্বয়ংক্রিয়ভাবে মেসেজ লোড
document.addEventListener('DOMContentLoaded', function() {
loadMessages();
});
async function loadMessages() {
try {
const response = await fetch('api/get-messages.php');
const messages = await response.json();
displayMessages(messages);
} catch(error) {
console.error('Error loading messages:', error);
}
}
Interval Auto Load (Polling)
SetInterval Method
// প্রতি 3 সেকেন্ড পর পর মেসেজ চেক
let intervalId = null;
function startAutoLoad() {
if(intervalId) clearInterval(intervalId);
// প্রথমবার ইমিডিয়েট লোড
loadNewMessages();
// প্রতি 3 সেকেন্ড পর পর লোড
intervalId = setInterval(loadNewMessages, 3000);
}
function stopAutoLoad() {
if(intervalId) {
clearInterval(intervalId);
intervalId = null;
}
}
// শুধু নতুন মেসেজ লোড (Optimized)
let lastMessageId = 0;
async function loadNewMessages() {
const response = await fetch(`api/new-messages.php?last_id=${lastMessageId}`);
const newMessages = await response.json();
if(newMessages.length > 0) {
appendMessages(newMessages);
lastMessageId = newMessages[newMessages.length - 1].id;
}
}
Infinite Scroll Auto Load
Scroll Detection
// Intersection Observer (Best Practice)
let page = 1;
let isLoading = false;
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if(entry.isIntersecting && !isLoading) {
loadMoreMessages();
}
});
}, { threshold: 0.1 });
// Sentinel element observe করা
const sentinel = document.getElementById('sentinel');
observer.observe(sentinel);
async function loadMoreMessages() {
isLoading = true;
showLoading();
const response = await fetch(`api/messages.php?page=${page}`);
const messages = await response.json();
appendMessages(messages);
page++;
isLoading = false;
hideLoading();
}
WebSocket (Real-time)
WebSocket Connection
// WebSocket - সবচেয়ে আধুনিক পদ্ধতি
const socket = new WebSocket('wss://your-server.com/chat');
socket.onopen = function() {
console.log('সংযোগ স্থাপিত হয়েছে');
socket.send(JSON.stringify({ type: 'join', room: 'general' }));
};
socket.onmessage = function(event) {
const message = JSON.parse(event.data);
// নতুন মেসেজ UI তে যোগ করুন
addMessageToUI(message);
};
socket.onerror = function(error) {
console.error('WebSocket Error:', error);
};
// মেসেজ সেন্ড করার ফাংশন
function sendMessage(text, user) {
const message = {
type: 'message',
text: text,
user: user,
timestamp: new Date()
};
socket.send(JSON.stringify(message));
}
Best Practices
Debouncing
স্ক্রোল ইভেন্টে অতিরিক্ত কল কমান
স্ক্রোল ইভেন্টে অতিরিক্ত কল কমান
Incremental Loading
শুধু নতুন ডাটা আনুন
শুধু নতুন ডাটা আনুন
Error Handling
নেটওয়ার্ক এরর হ্যান্ডল করুন
নেটওয়ার্ক এরর হ্যান্ডল করুন
Optimistic Updates
UI আগে আপডেট, ব্যাকএন্ড পরে
UI আগে আপডেট, ব্যাকএন্ড পরে
Live Demo: Message Auto Load
লোড হচ্ছে...
"Start Auto Load" ক্লিক করুন
প্রথম লোড হচ্ছে...