var net = require('net') , Client = require('./client') , protocol = require('./protocol') , states = protocol.states ; module.exports = ping; function ping(options, cb) { var host = options.host || 'localhost'; var port = options.port || 25565; var client = new Client(); client.on('error', function(err) { cb(err); }); client.once([states.STATUS, 0x00], function(packet) { var data = JSON.parse(packet.response); var start = Date.now(); client.once(0x01, function(packet) { data.latency = Date.now() - start; cb(null, data); client.end(); }); client.write(0x01, { time: [0, 0]}); }); client.on('state', function(newState) { if (newState === states.STATUS) client.write(0x00, {}); }); client.on('connect', function() { client.write(0x00, { protocolVersion: 4, serverHost: host, serverPort: port, nextState: 1 }); client.state = states.STATUS; }); client.connect(port, host); }