jafar
2 سال پیش توسط jafar مطرح شد
0 پاسخ

آپدیت کردن فیلد mysql توسط cronjob و ارسال تغییرات توسط socket

با سلام به همه
یه جدول دارم توی mysql که هر ده دقیقه توسط کران جاب آپدیت میشه(فیلد استاتوس من میشه: 1 یا 2 یا 3)
من میخوام فیلد استاتوس رو توسط socket به محض تغییر بفهمم و واسه همه emit کنم
واقعا نمیدونم باید چیکار کنم
البته با تایمر فیلدها رو گرفتم و emit کردم هر یک ثانیه ، ولی احساس میکنم ، این موضوع بار زیادی روی سرور تحمیل میکنه

کد سمت سرور :

var mysql = require("mysql");
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
  res.sendfile('index.html');
  //res.sendfile('/login/');
});
http.listen(3000, function(){
  console.log('listening on *:3000');
});
var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "test"
});

io.on('connection', function (socket) {
    console.log('a client connected');
    setInterval(function(){
      con.query('SELECT * FROM categories',function(err,rows){
        if(err) throw err;
        console.log('Data received from Db:\n');
        console.log(rows);
        socket.emit('showrows', rows);
      });
    }, 1000);
 });

کد سمت کلاینت

<script>
    var socket = io();
    socket.on('connect', function () {
      document.getElementById("socketio").innerHTML = "socket connected";
    });
    socket.on('showrows', function (rows) {
      var html = '';
      for (var i = 0; i < rows.length; i++) {
        html += rows[i].id + ' ' + rows[i].category_name + '<br>';
      }
      document.getElementById("display").innerHTML = html;
      console.log(rows);
    });
  </script>

دوستان بهترین راهکار چیه ؟


ثبت پرسش جدید

به همدیگه کمک کنیم

به jafar کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام