Socket.IO তে broadcast.emit() এবং socket.broadcast.emit() দুটি মেথড ব্যবহৃত হয় সার্ভারের মাধ্যমে রিয়েল-টাইমে এক বা একাধিক ক্লায়েন্টের কাছে মেসেজ পাঠানোর জন্য। তবে, এই দুটি মেথডের মধ্যে কিছু পার্থক্য রয়েছে। নিচে এগুলির ব্যবহারের বিস্তারিত ব্যাখ্যা দেওয়া হলো।
1. socket.broadcast.emit()
socket.broadcast.emit() একটি নির্দিষ্ট ক্লায়েন্টের মাধ্যমে সার্ভার থেকে অন্য সকল ক্লায়েন্টে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়, তবে এটি সেই ক্লায়েন্টকে বাদ দিয়ে। সহজভাবে, এটি সেখানে কানেক্ট থাকা ক্লায়েন্টদের কাছে মেসেজ পাঠায় যাদের সাথে বর্তমান ক্লায়েন্ট কানেক্ট নয়।
Syntax:
socket.broadcast.emit('event', data);event: এটি সেই ইভেন্টের নাম যা ক্লায়েন্টগুলো গ্রহণ করবে।data: এটি সেই ডেটা যা পাঠানো হবে।
ব্যবহার:
যখন একটি ক্লায়েন্ট কোন ইভেন্ট ঘটায়, এবং আপনি চান যে সেই ক্লায়েন্ট বাদে সকল ক্লায়েন্টকে মেসেজ পাঠানো হোক, তখন socket.broadcast.emit() ব্যবহার করা হয়।
সার্ভার সাইড উদাহরণ (Node.js):
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্ট থেকে একটি মেসেজ গ্রহণ করলে অন্য সকল ক্লায়েন্টকে মেসেজ পাঠানো
socket.on('message', (data) => {
console.log('Message received: ' + data);
// বাদে অন্য সকল ক্লায়েন্টকে মেসেজ পাঠানো
socket.broadcast.emit('newMessage', data);
});
// ডিসকানেক্ট হলে
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});এখানে, যখন একটি ক্লায়েন্ট 'message' ইভেন্ট পাঠায়, তখন socket.broadcast.emit('newMessage', data) দিয়ে সার্ভার সেই ক্লায়েন্ট বাদে অন্য সকল ক্লায়েন্টকে 'newMessage' ইভেন্টে মেসেজ পাঠায়।
2. broadcast.emit()
broadcast.emit() মূলত সার্ভারের io অবজেক্টের মাধ্যমে সর্বমোট সকল ক্লায়েন্টে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়, তবে এটি ক্লায়েন্টের সাথে সার্ভারের কানেকশন ব্যবহৃত হয় না। সাধারণত এটি সিংক্লিয়ারের জন্য ব্যবহৃত হয়। কিন্তু এটি socket.broadcast.emit() এর মতোই কাজ করে।
সার্ভার সাইড উদাহরণ:
// 'message' ইভেন্টে সকল ক্লায়েন্টে মেসেজ পাঠানো
io.broadcast.emit('newMessage', 'Hello to all clients!');এখানে, broadcast.emit() সরাসরি সকল ক্লায়েন্টকে মেসেজ পাঠাচ্ছে। তবে এটি ক্লায়েন্ট দ্বারা পাঠানো মেসেজের মতো কাজ করবে না, তাই সাধারণত socket.broadcast.emit() ব্যবহারের পরামর্শ দেওয়া হয়।
3. socket.broadcast.emit() বনাম broadcast.emit()
socket.broadcast.emit(): একটি নির্দিষ্ট ক্লায়েন্ট থেকে অন্য সকল ক্লায়েন্টকে মেসেজ পাঠায়। এটি বিশেষভাবে ব্যবহার করা হয় যখন আপনি চান যে নিজে মেসেজ না পাঠিয়ে শুধুমাত্র অন্যদের কাছে মেসেজ পৌঁছাতে হবে।broadcast.emit(): এটি সরাসরিioঅবজেক্টের মাধ্যমে কাজ করে এবং সর্বমোট সকল ক্লায়েন্টকে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
4. উদাহরণ: একাধিক ক্লায়েন্টে মেসেজ পাঠানো
সার্ভার সাইড (Node.js):
io.on('connection', (socket) => {
console.log('A user connected');
// ক্লায়েন্ট থেকে মেসেজ গ্রহণ
socket.on('sendMessage', (data) => {
console.log('Received message: ' + data);
// অন্য সকল ক্লায়েন্টে মেসেজ পাঠানো
socket.broadcast.emit('newMessage', data);
});
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});ক্লায়েন্ট সাইড (HTML + JavaScript):
<script>
var socket = io();
// সার্ভার থেকে মেসেজ গ্রহণ
socket.on('newMessage', function (data) {
console.log('Message from other clients: ' + data);
});
// সার্ভারে মেসেজ পাঠানো
socket.emit('sendMessage', 'Hello, everyone!');
</script>এখানে, যখন একজন ক্লায়েন্ট sendMessage ইভেন্ট পাঠায়, তখন socket.broadcast.emit('newMessage', data) দিয়ে অন্য সকল ক্লায়েন্টে সেই মেসেজ পাঠানো হয়।
সারসংক্ষেপ:
socket.broadcast.emit(): এটি ব্যবহৃত হয় ক্লায়েন্টের মাধ্যমে বাকি সকল ক্লায়েন্টে মেসেজ পাঠানোর জন্য, কিন্তু ক্লায়েন্ট নিজেই এতে অন্তর্ভুক্ত থাকে না।broadcast.emit(): এটিioঅবজেক্টের মাধ্যমে সকল ক্লায়েন্টে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
এই দুটি মেথডের মাধ্যমে Socket.IO-তে রিয়েল-টাইম ডেটা শেয়ারিং বা ব্রডকাস্টিং কার্যকরভাবে সম্পাদন করা হয়।
Read more