Files
notificationServer/index.js
2023-10-01 11:56:37 +03:30

85 lines
3.4 KiB
JavaScript

"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));
});