• 07-12-2024, 23:35:55
    #1
    Merhaba arkadaşlar ,

    socket kurup bir chat uygulaması yapmaya çalışıyordum. daha önceden pusher 'in sunduğu ücretsiz versiyonu kullanmıştım ama bu projede ücretsiz limitlerin bana yeterli olmayacağını düşünüyorum.

    https://siteadi.com/test.html linkine giriş sağlayabiliyorum. bir kaç mesaj attıktan sonra mesaj gitmemeye ve gelmemeye başlıyor sayfayı yeniliyorum ve CloudFlare 'den sunucu ile bağlantı kesildi hatası alıyorum ama sunucu ayakta. bi dakika sonra düzeliyor bir türlü problemi anlamadım bilgisi olan var mı?

    app.js
    const express = require('express');
    const http = require('http');
    const socketIo = require('socket.io');
    
    const app = express();
    const server = http.createServer(app);
    const io = socketIo(server);
    
    // Statik dosyaları sunmak için 'public' klasörünü kullanabiliriz
    app.use(express.static('public'));
    
    // Root route tanımı (Ana sayfa)
    app.get('/', (req, res) => {
      try {
        res.sendFile(__dirname + '/index.html');  // index.html dosyasını döndür
      } catch (error) {
        console.error('Ana sayfa yüklenirken bir hata oluştu:', error);
      }
    });
    
    // Socket.IO bağlantısı
    io.on('connection', (socket) => {
      console.log('Yeni bir kullanıcı bağlandı');
    
      // Mesaj alındığında
      socket.on('chat message', (msg) => {
        try {
          console.log('Mesaj:', msg);
          io.emit('chat message', msg); // Mesajı tüm kullanıcılara gönder
        } catch (error) {
          console.error('Mesaj gönderilirken bir hata oluştu:', error);
        }
      });
    
      // Bağlantı kesildiğinde
      socket.on('disconnect', () => {
        console.log('Kullanıcı bağlantıyı kesti');
      });
    });
    
    // Uygulamayı dinlemeye başla
    server.listen(3000, () => {
      try {
        console.log('Sunucu 3000 portunda çalışıyor');
      } catch (error) {
        console.error('Sunucu başlatılırken bir hata oluştu:', error);
      }
    });
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Socket.IO Chat</title>
    
      <!-- Socket.IO istemcisi -->
      <script src="https://cdn.socket.io/4.5.1/socket.io.min.js"></script> <!-- Socket.IO CDN versiyonu -->
      <script>
        // Eğer SSL kullanıyorsanız (wss://), doğru URL ile bağlantı kurun.
        const socket = io('https://socket.hiph.app');  // 'https://site.com' kendi sunucunuzun URL'si olmalı
    
        // Mesaj gönderme
        function sendMessage() {
          const msg = document.getElementById('message').value;
          socket.emit('chat message', msg);
          document.getElementById('message').value = ''; // Mesaj kutusunu temizle
        }
    
        // Mesaj alındığında
        socket.on('chat message', (msg) => {
          console.log('Gelen mesaj:', msg); // Gelen mesajı konsola yazdır
          const item = document.createElement('li');
          item.textContent = msg;
          document.getElementById('messages').appendChild(item);
        });
      </script>
    </head>
    <body>
      <h1>Socket.IO Chat</h1>
      <ul id="messages"></ul>
      <input id="message" type="text" placeholder="Mesajınızı yazın">
      <button onclick="sendMessage()">Gönder</button>
    </body>
    </html>
  • 07-12-2024, 23:40:08
    #2
    Cloudflare WebSocket proxying ayarlarını kontrol ederek, socket.io için yeniden bağlantı ve zaman aşımı ayarlarını yapmayı deneyin.
  • 07-12-2024, 23:41:00
    #3
    ozkanboztay adlı üyeden alıntı: mesajı görüntüle
    Cloudflare WebSocket proxying ayarlarını kontrol ederek, socket.io için yeniden bağlantı ve zaman aşımı ayarlarını yapmayı deneyin.
    Bunu nasıl yapacağım bilgilendirebilir misiniz
  • 07-12-2024, 23:41:51
    #4
    <script src="https://cdn.socket.io/4.5.1/socket.io.min.js"></script> <!-- Socket.IO CDN versiyonu -->
    bu dosyayi kendi socket sunucunuzdan çekerek deneme yapabilir misiniz?
  • 07-12-2024, 23:46:18
    #5
    dinarbey adlı üyeden alıntı: mesajı görüntüle
    <script src="https://cdn.socket.io/4.5.1/socket.io.min.js"></script> <!-- Socket.IO CDN versiyonu -->
    bu dosyayi kendi socket sunucunuzdan çekerek deneme yapabilir misiniz?
    Denedim. problem devam ediyor. Cloudflare taraflı bir problem olması daha muhtemel geliyor bana.
  • 07-12-2024, 23:49:06
    #6
    Sunucu tarafindaki yapılandırmanız tam olarak nasıl? daha önce sunucu tarafında nginx kullanmıştım socket.domain.com adresini sunucuya yönlendirip nginx tarafında ise 3000 portuna yönlendirme yapıyordum. Herhangi bir sorun yaşamamıştım.
  • 07-12-2024, 23:50:57
    #7
    dinarbey adlı üyeden alıntı: mesajı görüntüle
    Sunucu tarafindaki yapılandırmanız tam olarak nasıl? daha önce sunucu tarafında nginx kullanmıştım socket.domain.com adresini sunucuya yönlendirip nginx tarafında ise 3000 portuna yönlendirme yapıyordum. Herhangi bir sorun yaşamamıştım.
    Sunucu ayakta bende aynı şekilde kullanım yapıyorum. http://socket.domain.com:3000/ ile erişemiyorum ama serverip:3000 ile erişim mevcut. Cloudlflare'den kaynaklı olmalı.
  • 07-12-2024, 23:52:47
    #8
    Cloudflare tarafını paylaşır mısınız dns kayıtlarını
  • 07-12-2024, 23:56:16
    #9
    ONURERDGN adlı üyeden alıntı: mesajı görüntüle
    Sunucu ayakta bende aynı şekilde kullanım yapıyorum. http://socket.domain.com:3000/ ile erişemiyorum ama serverip:3000 ile erişim mevcut. Cloudlflare'den kaynaklı olmalı.
    socket sunucunu bu ayara getirip dener misin?