Merhaba arkadaşlar bir chat uygulaması yapıyorum bireysel ve grup sohbetler mevcut.
" /send-message " 'e PHP ile jwt token ile mesajı post ediyorum ve io.to(chatId).emit('newMessage', messageData); buraya ekliyorum. ancak frontend'te yeni mesajları dinlemeye çalışıyorum ama hiçbir yanıt alamıyorum.

   socket.emit('listen', jwtDetail);
        socket.on('newMessage', (messageData) => {
          try {
            console.log('Yeni mesaj alındı:', messageData);
          } catch (error) {
            console.log('Mesaj alma hatası:', error.message);
          }
        });


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.');
    }
  });
  // message gönderme 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 {
    
    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.`);
});