ارسال پیام از سرور به تمام کلاینت ها در node.js
دوشنبه, ۳۱ خرداد ۱۳۹۵، ۱۱:۲۶ ب.ظ
node.js
send text server to all clients
می خواهیم برنامه ای بنویسیم که به وسیله تایمر هر 8 ثانیه پیامی شامل تعداد کلاینت های انلاین و همین طور تعداد دفعات ارسال پیام را به همه ی کلاینت ها ارسال کند
هدف از ساخت این برنامه یادگرفتن چگونگی ارسال پیام از سرور به کلاینت ها است
برای ساخت ارتباط socket در node از کتابخونه net استفاده میکنیم.
کد کامل سرور ( server.js )
// Load the TCP Library net = require('net'); var HOST = '127.0.0.1'; // Keep track of the chat clients var clients = []; var man=0; var cl=0; // Start a TCP Server net.createServer(function (socket) { socket.name = socket.remoteAddress + ":" + socket.remotePort clients.push(socket); cl++; console.log("Run:"+man+" \n"); }).listen(5000,HOST); function broadcast(message, sender) { clients.forEach(function (client) { // Don't want to send it to sender if (client === sender) return; client.write(message); }) }; // Put a friendly message on the terminal of the server. console.log("Chat server running at port 5000\n"); setInterval(function() { broadcast("Runed:"+man.toString()+" Tedad Client Online:"+cl.toString()); man++; }, 8000);
این دو متغیر :
var man=0; var cl=0;
متغیر man تعداد دفعات ارسال پیام را نگهداری میکند و cl تعداد کلاینت های انلاین را
در این قسمت
net.createServer(function (socket) { socket.name = socket.remoteAddress + ":" + socket.remotePort clients.push(socket); cl++; console.log("Run:"+man+" \n"); }).listen(5000,HOST);
یک سرور ایجاد می کنیم هر بار که یک کلاینت جدید به سرور متصل شود کد داخل ان اجرا میشود مثلا در قطعه کد بالا بعد از اتصال هر کلاینت به سرور
cl++;
اجرا میشه و به تعداد کلاینت های انلاین یکی اضافه میکنه
setInterval(function() { broadcast("Runed:"+man.toString()+" Tedad Client Online:"+cl.toString()); man++; }, 8000);
این کد همون تایمر ماست که هر 8 ثانیه به همه کلاینت ها پیام ارسال میکنه
کد کامل کلاینت ( client.js )
var net = require('net'); var HOST = '127.0.0.1'; var PORT = 5000; var client = new net.Socket(); client.connect(PORT, HOST, function() { console.log('CONNECTED TO: ' + HOST + ':' + PORT); }); client.on('data', function(data) { console.log('DATA: ' + data); }); client.on('close', function() { console.log('Connection closed'); });
۹۵/۰۳/۳۱