[英]Socket.io not sending data
我的應用程序有兩個部分,一個是注冊,另一個是索引/登錄,這種情況是我想在用戶每次注冊時都進行更新,這樣做的難點是使索引從頭開始顯示查詢,沒有被寄存器發送。 碼:
索引腳本:
<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);
})
});
});
我不知道為什么,因為它是相同的代碼...
我修復了將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');
});
});
})
});
希望它可以幫助任何人!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.