Onefire adlı üyeden alıntı: mesajı görüntüle
const express = require('express');
const http = require('http');
const { Server } = require('socket.io');
const jwt = require('jsonwebtoken');

// Uygulama ayarları
const app = express();
const server = http.createServer(app);
const io = new Server(server);
const JWT_SECRET = 'jwtKodum';

// Mesajların saklanacağı bellek
const chats = {}; // { chatId: [ { senderId, message, createdAt, ... } ] }

// Statik dosyalar için klasör
app.use(express.static('public'));

// Body parsing middleware
app.use(express.json()); // JSON verisini almak için

// Socket.IO bağlantı işlemleri
io.on('connection', (socket) => {
  console.log('Bir kullanıcı bağlandı:', socket.id);

  // listen(jwt) eventi dinlenir
  socket.on('listen', (jwtToken) => {
    try {
      // JWT doğrula ve çöz
      const decoded = jwt.verify(jwtToken, JWT_SECRET);
      const chatId = decoded.chat_id;

      // Odaya katıl
      socket.join(chatId);
      console.log(`Kullanıcı ${socket.id}, ${chatId} odasına katıldı.`);

      // Daha önce gelen mesajları gönder
      if (chats[chatId]) {
        socket.emit('messages', chats[chatId]);
      }
    } catch (error) {
      console.error('JWT doğrulama hatası:', error.message);
      socket.emit('error', 'Geçersiz token.');
    }
  });

  // sendMessage eventi dinlenir
  socket.on('sendMessage', (messageJwt, callback) => {
    try {
      // Mesaj JWT doğrula ve çöz
      const decoded = jwt.verify(messageJwt, JWT_SECRET);
      const { chatId, senderId, message, createdAt, filesHave, files } = decoded.data;

      // Mesajı chat[chatId] dizisine ekle
      if (!chats[chatId]) {
        chats[chatId] = [];
      }

      const messageData = { senderId, message, createdAt, filesHave, files };
      chats[chatId].push(messageData);
      console.log(`Mesaj ${chatId} odasına eklendi:`, messageData);

      // Mesajı odaya yayınla
      io.to(chatId).emit('newMessage', messageData);

      // Başarıyla tamamlandığında callback'i çağır
      callback({ status: 'success' });
    } catch (error) {
      console.error('JWT doğrulama hatası:', error.message);

      // Hata durumunda callback ile yanıt gönder
      callback({ status: 'error', error: 'Geçersiz mesaj token.' });
    }
  });

  // Kullanıcı bağlantıyı kapattığında
  socket.on('disconnect', () => {
    console.log('Bir kullanıcı ayrıldı:', socket.id);
  });
});

// POST endpoint oluşturulması
app.post('/send-message', (req, res) => {
  const { messageJwt } = req.body;  // Gelen veri sadece messageJwt
  try {
    // JWT doğrula ve çöz
    const decoded = jwt.verify(messageJwt, JWT_SECRET);
    const { chatId, senderId, message, createdAt, filesHave, files } = decoded.data;

    // Mesajı chat[chatId] dizisine ekle
    if (!chats[chatId]) {
      chats[chatId] = [];
    }

    const messageData = { senderId, message, createdAt, filesHave, files };
    chats[chatId].push(messageData);
    console.log(`Mesaj ${chatId} odasına eklendi:`, messageData);

    // Mesajı odaya Socket.IO üzerinden gönder
    io.to(chatId).emit('newMessage', messageData);

    // Başarıyla tamamlanır
    res.status(200).json({ status: 'success', message: 'Mesaj başarıyla gönderildi.', data: messageData });
  } catch (error) {
    console.error('JWT doğrulama hatası:', error.message);
    res.status(400).json({ status: 'error', message: 'Geçersiz token.' });
  }
});

// Sunucuyu başlat
const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Sunucus ${PORT} portunda çalışıyor.`);
});

const socket = io(); // Bağlantıyı başlat

// listen eventini tetikle
const jwtDetail = "YOUR_JWT_TOKEN_HERE";  // JWT token'ınızı burada kullanın
socket.emit('listen', jwtDetail);

// Yeni mesaj alındığında işleme
socket.on('newMessage', (messageData) => {
  try {
    console.log('Yeni mesaj alındı:', messageData);
    // Mesajı UI'de görüntüleme veya başka işlem yapabilirsiniz
  } catch (error) {
    console.log('Mesaj alma hatası:', error.message);
  }
});

// Hata durumunda alınacak mesaj
socket.on('error', (errorMessage) => {
  console.log('Hata:', errorMessage);
});
Dostum sence ben ai 'ye sormamış olabilir miyim