Pertanyaan Menggunakan node.js untuk menampilkan jumlah pengguna saat ini


Saya entah bagaimana berhasil mengikis bersama server simpul lokal. Yang saya coba lakukan adalah ketika pengguna terhubung ke server, untuk memperbarui integer. Saya tidak dapat menemukan apa yang melacak pengguna saat ini dalam kode node.js.

if(newUserConnects){
    currentUsers += 1;
}
else if(userDisconnects){
    currentUsers -= 1;
}

Saya sangat baru untuk pemrograman sisi server (saya telah melakukan sedikit php, tetapi tidak ada yang berinteraksi secara langsung dengan permintaan pemutusan).


5
2017-12-09 17:02


asal


Jawaban:


Anda mungkin ingin melihat menggunakan socket.io. Ini menyediakan kait ke hal-hal yang dapat dengan mudah menghitung dan memperbarui kode.

Saya membuat aplikasi yang melakukan ini: http://xjamundx.no.de

Kode sumbernya ada di sini: https://github.com/xjamundx/CollabPaintJS/blob/master/server.js

Lihat apa yang saya lakukan dengan variabel hitungan.

var count = 0
socket.on('connection', function(client) {
    count++;
    client.broadcast({count:count})
    client.on('disconnect', function(){
        count--;
    })
})

Semoga itu membantu!

Kode sisi klien ada di sini: https://github.com/xjamundx/CollabPaintJS/blob/master/public/collabpaint.js

FYI, aplikasi saya dibangun dengan versi socket.io sebelumnya sehingga sintaksnya sedikit berubah!


7
2017-12-09 18:26



Terima kasih Jamund, solusi yang sangat sederhana dan efektif. Ini kode saya:

server.js  (Node-0.6.6)

var io = require('socket.io').listen(7777);
var count = 0

io.sockets.on('connection', function(socket) {
    count++;
    io.sockets.emit('message', { count: count });

    io.sockets.on('disconnect', function(){
        count--;
        io.sockets.emit('message', { count: count });
    })
});

client.js  (jQuery 1.6.4)

var socket = io.connect('http://domain.com:7777');
socket.on('message', function (data) {
    console.log(data.count);
});

6
2017-07-11 09:01



Diuji dan berfungsi dengan:

  • Node v0.12.2 (server)
  • Socket.io v0.9.17 (server)
  • jQuery v1.11.3 (klien)

server.js

var io = require('socket.io').listen(8080);
var count = 0

io.sockets.on('connection', function(socket) {
    count++;
    io.sockets.emit('message', { count: count });

    socket.on('disconnect', function(){
        count--;
        io.sockets.emit('message', { count: count });
    })
});

client.js

var socket = io.connect('http://localhost:8080');
socket.on('message', function (data) {
    console.log(data.count);
});

0