2015-07-18 116 views
0

我有我的應用程序的2個部分的註冊,和索引/登錄,案件是,我想更新每次用戶獲得註冊,這是做了困難的一部分,這是讓該索引顯示從開始的查詢並且不由寄存器發送。代碼:Socket.io不發送數據

指數腳本:

<script> 
    var socket = io(); 
    socket.on('registered', function (msg) { 
     $('#messages').empty().append(msg).hide().fadeIn(500); 
     console.log(msg); 
    }); 
    function message() { 
     var mes = document.getElementById('text').value; 
     console.log(mes); 
     socket.emit('registered', mes); 
    } 
</script> 

指數代碼讓用戶:

global.mysql.query("SELECT * FROM users ORDER BY id DESC LIMIT 4", function (err, rows, fields) { 
     if (err) throw err; 
     var msg = ""; 
     for(var i = 0; i <= rows.length-1; i++) { 
      msg += rows[i].username + '<br>'; 
     } 

     global.io.sockets.emit('registered', msg); 

    }) 

代碼從寄存器:

router.post('/register', function(req, res, next) { 
    global.mysql.query("INSERT INTO users (id, username) VALUES (?,?)", [null, req.body.user], function() { 
     global.mysql.query("SELECT * FROM users ORDER BY id DESC LIMIT 4", function(err, rows, fields) { 
      if (err) throw err; 
      var msg = ""; 
      for(var i = 0; i <= rows.length-1; i++) { 
       msg += rows[i].username + '<br>'; 
      } 
      global.io.sockets.emit('registered', msg); 
     }) 
    }); 
}); 

我不知道爲什麼,因爲它是相同的代碼...

+0

不相關,但你真的不應該使用這樣的全局變量。而不是使它成爲全局只是導出mysql和io對象,並且需要require('./ mysql.js')和require('./ io.js') –

+0

我知道但只是一個測試項目,我來自PHP我發現它變化很大,我唯一需要的就是這項工作。稍後我會看到如何獲得更好的代碼:D – jaume5900

+0

只要確保你知道:)。您是否嘗試過打開Chrome/safari/firefox開發工具並檢查web套接字是否打開併發送任何數據?我們可以看到你設置/附加socket.io到你的http服務器的代碼嗎? –

回答

0

我修好了將io.on放入路由器:

router.get('/', function(req, res, next) { 
    res.sendFile(global.path + '/views/index.html'); 
    global.mysql.query("SELECT * FROM users ORDER BY id DESC LIMIT 4", function (err, rows, fields) { 
     if (err) throw err; 
     var msg = ""; 
     for(var i = 0; i <= rows.length-1; i++) { 
      msg += rows[i].username + '<br>'; 
     } 
     global.io.on('connection', function(socket){ 
      console.log('a user connected'); 

      global.io.sockets.emit('registered', msg); 

      socket.on('disconnect', function(){ 
       console.log('user disconnected'); 
      }); 
     }); 

    }) 
}); 

希望它能幫助任何人!