"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var express_1 = require("express"); var http_1 = require("http"); // Import Node's built-in HTTP module var socket_io_1 = require("socket.io"); // Import Socket.io var express_validator_1 = require("express-validator"); var body_parser_1 = require("body-parser"); require('dotenv').config(); var app = (0, express_1.default)(); var server = http_1.default.createServer(app); // Create an HTTP server var io = new socket_io_1.Server(server); // Create a Socket.io server instance // app.use(bodyParser.urlencoded()); // app.use(bodyParser.json()); app.use(express_1.default.json()); app.use(express_1.default.urlencoded({ extended: true })); app.post('/test', body_parser_1.default.json(), function (req, res) { console.log(req.body); res.send(req.body); }); var validate = function (req, res, next) { // console.log(req.body); // console.log(JSON.stringify(req.body, null, 2)); var errors = (0, express_validator_1.validationResult)(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } next(); }; var rules = [ (0, express_validator_1.body)('phone_number').notEmpty(), (0, express_validator_1.body)('telephone_id').notEmpty(), (0, express_validator_1.body)('phone_number').isLength({ min: 11, max: 11 }).withMessage("شماره تلفن باید 11 رقم باشد.") ]; app.post('/send_notification', rules, validate, function (req, res) { // console.log(req.body.telephone_id); io.fetchSockets().then(function (sockets) { var find = 0; sockets.map(function (socket) { if (socket.handshake.auth.token === req.body.telephone_id) { find = 1; socket.timeout(2000).emit("answer", req.body.phone_number, function (err, responses) { if (err) { console.log("#2"); console.log(err); res.end("user does not ack"); // some clients did not acknowledge the event in the given delay } else { console.log("#1"); console.log(responses); // one response per client res.end("user received notification"); } }); } // res.end("inja"); // try { // const responses = socket.timeout(2000).emitWithAck("answer"); // res.send(responses); // one response per client // } catch (e) { // res.end("ridim"); // // some clients did not acknowledge the event in the given delay // } // socket.timeout(10000).emitWithAck('new_answer', req.body.phone_number); }); if (!find) { } }); res.end("your message is received "); }); io.on('connection', function (socket) { if (socket.recovered) { console.log(socket.handshake.auth.token + ':recovered'); } else { console.log(socket.handshake.auth.token + ":connect"); } socket.on("disconnect", function (reason) { console.log(socket.handshake.auth.token + ":" + reason); }); }); // Start the HTTP server server.listen(process.env.port, function () { console.log("Server is running on port ".concat(process.env.port)); });