Проблема с приложением чата в реальном времени для сохранения сообщений в базе данныхJAVA

Программисты JAVA общаются здесь
Anonymous
Проблема с приложением чата в реальном времени для сохранения сообщений в базе данных

Сообщение Anonymous »

В настоящее время я разрабатываю приложение для чата в реальном времени с использованием Java и Node.js. Поскольку это приложение имеет функции общения в реальном времени, я не ожидаю каких-либо задержек при передаче сообщений между пользователями. В моем приложении пользователи должны проверять токены своей учетной записи, чтобы отправлять сообщения в режиме реального времени, и сообщения также должны сохраняться в базе данных. Однако из-за задержки операций с базой данных в этом процессе (например, проверки токенов) передача сообщений в режиме реального времени будет происходить с некоторой задержкой. Какой подход может быть подходящим для решения этой проблемы? Я не хочу каких-либо задержек или хочу, чтобы задержка была очень небольшой для моего приложения чата в реальном времени.
Например, даже если это связано с общением в реальном времени, следующий код приведет к некоторой задержке передачи сообщений из-за операций с базой данных:
const net = require("net");

const mysql2 = require("mysql2");

const jwt = require("jsonwebtoken");

require("dotenv").config();

const clients = [];

const server = net.createServer((socket) => {

socket.on("connect", () => {

clients.push(socket);

});

socket.on("end", () => {

const clientIndex = clients.indexOf(socket);

if (clientIndex !== -1) {

clients.splice(clientIndex, 1);

}

});

socket.on("data", (data) => {

const message = JSON.parse(data.toString());

connection.query("SELECT token FROM sessions WHERE user_id = ?", [message.user_id], (e, r) => {

if (!e && r.length > 0) {

jwt.verify(process.env.SECRET, r[0].token, (err, decoded) => {

if (!err) {

clients.forEach((client) => {

if (client !== socket) {

client.write(message.message);

}

});

}

}

}

});

});

});

const connection = mysql2.createPool({

host: process.env.HOST

port: process.env.PORT,

user: process.env.USER,

password: process.env.PASSWORD,

database: process.env.DATABASE

});

connection.getConnection((err) => {

if (err) return;

console.log("Connected to the database successfully!");

});


Подробнее здесь: https://stackoverflow.com/questions/781 ... o-database

Вернуться в «JAVA»