निकाल दिया गया है मैंने एक साधारण रीयलटाइम विज़िटर काउंटर बनाया है।socket.io: डिस्कनेक्ट ईवेंट
आप इसे this repository से डाउनलोड कर सकते हैं।
क्या होता है कि सर्वर पर डिस्कनेक्ट ईवेंट (ब्राउज़र बंद होने के बाद भी) कभी नहीं निकाल दिया जाता है।
server.js है:
(function() {
var app, count, express, io;
express = require('express');
io = require('socket.io');
app = module.exports = express.createServer();
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(require('stylus').middleware({
src: __dirname + '/public'
}));
app.use(app.router);
return app.use(express.static(__dirname + '/public'));
});
app.configure('development', function() {
return app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
app.configure('production', function() {
return app.use(express.errorHandler());
});
io = require('socket.io').listen(app);
count = 0;
io.sockets.on('connection', function (socket) {
count++;
io.sockets.emit('count', {
number: count
});
});
io.sockets.on('disconnect', function() {
console.log('DISCONNESSO!!! ');
count--;
io.sockets.emit('count', {
number: count
});
});
app.get('/', function (req, res) {
return res.render('index', {
title: 'node.js express socket.io counter'
});
});
if (!module.parent) {
app.listen(10927);
console.log("Express server listening on port %d", app.address().port);
}
}).call(this);
ग्राहक पर लिपि है:
script(type='text/javascript')
var socket = io.connect();
socket.on('count', function (data) {
$('#count').html(data.number);
});
आप नोटिस किया कि मैं ऊपर socket.on लिखा है? – swiecki
बिल्कुल सही, अब यह ठीक काम करता है –
एफवाईआई, यदि परिवहन के लिए एक्सएचआर-मतदान का उपयोग किया जा रहा है, तो डिस्कनेक्ट होने से पहले देरी हो सकती है। –