Nodejs Socket Emit Sorun
-
io.sockets.on('connection', function(socket) { socket.on('new user', function(data, callback) { console.log(data); if (nicknames.indexOf(data) != -1) { callback(false); } else { callback(true); socket.nickname = data.user_id; nicknames.push(socket.nickname); connection.query('INSERT INTO online_users SET ?', data, function(err, res) { if (err) throw err; console.log('Last online user ID : ', res.insertId); }); updateOnlineUsers(); } }); function updateOnlineUsers() { connection.query('SELECT id, name, surname, title, profile_img_path FROM user_information WHERE id IN (SELECT DISTINCT uid FROM online_users)', function (err, rows) { if (err) throw err; console.log(rows); io.sockets.emit('onlineusers', rows); }); } });
Bu updateOnlineUsers' daki io.sockets.emit diğer tarafa bişey göndermiyor. Hata falan da vermiyor. Eğer sorgusuz (mysql sorgusu yapmadan) direk data yollamaya kalkarsam, o zaman yolluyor. Ayrıca mysql sorgusundaki rows da dolu görünüyor.
socket.on('onlineusers', function(data) { for (var i = 0; i < data.length; i++) { var p1 = '<li class="online"><div class="media"><a href="#" class="pull-left media-thumb">'; var p2 = '<img alt="" src="images/photos/userprofile.png" class="media-object"></a><div class="media-body">'; var p3 = '<strong>'+data[i].title + ' ' + data[i].name + ' ' + data[i].surname +'</strong><small>Los Angeles, CA</small></div></div></li>'; $onlineChatUsers.append(p1 + p2 + p3); } });
-
zup
-
@RockZs hocama duyrulur :)
Pek müsait değilim ben ilgilenemiyorum
-
Anladığım kadarıyla konsola data da düzgün geliyor. Sorun şu satırda mıdır acaba ? "connection.query('INSERT INTO online_users SET ?', data, function(err, res)"
Eğer bu yöntem ile işin içinden çıkamaz isen "Express" i öneririm. Hiç mysql'e bulaşmadan işini çözebilirsin.
-
ozgunlu hocam, üstteki 'new user' socket eventindeki if-else içinde yer alan updateOnlineUsers(); fonksiyonunu bir üst parantezde (yani mysql sorgusunun içinde, callback'inde, yani "console.log('Last online... " satısından hemen sonra ya da önce..) çağırmayı dener misin?
estağfirullah by_Tet.. ne haddime.
-
Hata yokmuş kodda, hata bende. Php nin içine nodejs sokuşturmaya çalışıyorum.
Signin olduktan sonra başka sayfaya yönleniyor js üzerinden ama bundan önce socket.on('onlineusers', function(data) { bunu yaptırınca yiyeceğini düşünüyordum ama yemedi.
Datayı alamadan diğer sayfaya çuf çuf, sonra da kim kime dum duma. Başka türlü denicem, bulamazsam size tüm kodları açıp bi sorarım.
@RockZs evet hocam oraya koymak daha mantıklı ama çok fazla user olduğu için callback olup olmamasının pek manası yoktu. Ama oraya koydum, çünkü doğrusu o :D
-
Sorunun çözüldüğüne sevindim :) Kolay gelsin.. Sevgilerle..