ServBay ile Socket.io Projesi Oluşturma ve Çalıştırma
Socket.io; gerçek zamanlı, çift yönlü ve olay tabanlı web uygulamaları geliştirmek için tasarlanmış popüler bir JavaScript kütüphanesidir. WebSocket protokolü üzerine kurulu olan Socket.io, gerektiğinde uzun anket gibi alternatiflere otomatik olarak geçerek farklı istemci ve ağ koşullarında güvenilir ve istikrarlı gerçek zamanlı iletişimi garanti eder.
Bu rehberde, ServBay’in güçlü yerel geliştirme ortamını kullanarak bir Socket.io projesinin nasıl kurulup yönetileceği ayrıntılı şekilde anlatılacaktır. ServBay; önceden yapılandırılmış Node.js ortamı ve pratik web sitesi (eski adıyla: ana bilgisayar) yönetim fonksiyonlarıyla Socket.io geliştirmeyi çok daha verimli hale getirir.
Socket.io Nedir?
Socket.io, gerçek zamanlı, çift yönlü ve olay tabanlı iletişim mekanizması sağlayan bir kütüphanedir ve şu iki bölümden oluşur:
- Node.js sunucusunda çalışan arka uç kütüphanesi.
- Tarayıcıda çalışan istemci tarafı JavaScript kütüphanesi.
Socket.io’nun temel amacı WebSocket’i kullanmak olsa da; WebSocket desteklemeyen eski tarayıcıları ve kısıtlı ağ ortamlarını desteklemek için Adobe Flash Socket, Ajax Long Polling, Ajax Multipart Streaming, Forever IFrame, JSONP Polling gibi alternatiflere otomatik geçiş sağlar.
Socket.io’nun Temel Özellikleri ve Avantajları
- Gerçek Zamanlı İletişim: Sunucu ile istemci arasında anında veri alışverişi sağlar; sohbet uygulamaları, iş birliği araçları, canlı panolar, çevrim içi oyunlar için idealdir.
- Çapraz Platform Desteği: Web tarayıcıları, mobil uygulamalar ve Node.js sunucu ortamlarında kullanılabilir.
- Otomatik Yeniden Bağlanma: Ağ kopması durumunda istemci otomatik olarak sunucuya yeniden bağlanır, bu da uygulamanın sağlamlığını artırır.
- Olay Tabanlı Programlama: Olay temelli model, asenkron iletişim yönetimini sezgisel ve kolay hale getirir.
- Odalar ve İsim Alanları (Namespace): İstemcileri gruplandırıp sadece belirli gruplara mesaj gönderebilir; isim alanları ile aynı bağlantıda kaynak çoklaması ve çoklu uygulama desteği sunar.
- İkili Veri Desteği: İkili (binary) veri alışverişi kolayca yapılabilir.
- Yüksek Uyum: Farklı ağ koşullarında çeşitli aktarım mekanizmaları sayesinde yüksek güvenilirlik sağlar.
Socket.io sayesinde geliştiriciler, karmaşık gerçek zamanlı iletişim altyapısıyla uğraşmak zorunda olmadan uygulama mantığına odaklanabilir.
ServBay ile Socket.io Projesi Oluşturup Çalıştırma
ServBay, Node.js geliştiricileri için kullanıma hazır bir yerel ortam sunar; Node.js çalışma zamanı, npm paket yöneticisi ve kolay web sitesi yönetim araçları içerir. Bu bölümde, bir Socket.io örnek projesi kurmak ve çalıştırmak için bu özelliklerden nasıl yararlanacağımızı anlatacağız.
Ön Gereksinimler
Başlamadan önce aşağıdaki adımların tamamlandığından emin olun:
- ServBay'i kurun: ServBay Resmi Web Sitesi üzerinden ServBay’in en güncel sürümünü indirip kurun.
- ServBay’de Node.js Paketini Yükleyin: ServBay yönetim panelindeki “Paketler” (eski adı: Hizmetler) bölümünden Node.js paketini yüklediğinizden emin olun. Daha fazla bilgi için ServBay’de Node.js Kullanımı belgesine göz atabilirsiniz.
Socket.io Örnek Projesi Oluşturma
Basit bir sohbet uygulaması örneği oluşturacağız.
Proje Klasörünü Hazırlama:
Öncelikle terminal uygulamanızı açın. ServBay, web projelerinin genellikle
/Applications/ServBay/www
dizininde saklanmasını önerir. Bu dizine geçin; yeni bir proje klasörü oluşturun; ardından Node.js projesini başlatıp gerekli bağımlılıkları yükleyin:bashcd /Applications/ServBay/www mkdir servbay-socketio-chat cd servbay-socketio-chat npm init -y npm install express socket.io
1
2
3
4
5Bu,
servbay-socketio-chat
klasöründe birpackage.json
dosyası oluşturur ve bize gereken iki ana bağımlılığımız olanexpress
(statik dosya sunmak ve HTTP isteklerini işlemek için) vesocket.io
(sunucu ve istemci kütüphaneleri) paketini yükler.Sunucu Dosyası Oluşturma (
server.js
):servbay-socketio-chat
proje kök dizinindeserver.js
adında bir dosya oluşturun ve aşağıdaki kodu yapıştırın. Bu dosya, HTTP sunucuyu başlatmaktan, Socket.io’yu entegre etmekten ve istemci bağlantılarını ve mesajlarını yönetmekten sorumludur.javascriptconst express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const path = require('path'); // path modülünü dahil edin const app = express(); // express uygulaması tabanlı bir HTTP sunucusu oluşturun const server = http.createServer(app); // Socket.io’yu HTTP sunucusuna ekleyin const io = socketIo(server); // Statik dosya klasörünü ayarlayın, geçerli klasörü işaret eder app.use(express.static(__dirname)); // Ana dizine gelen GET isteğini işleyin, index.html dosyasını gönderin app.get('/', (req, res) => { // path.join kullanarak tüm işletim sistemlerinde uyumluluk sağlayın res.sendFile(path.join(__dirname, 'index.html')); }); // Socket.io bağlantı olayını dinleyin io.on('connection', (socket) => { console.log('a user connected'); // Yeni bir kullanıcı bağlandığında log yaz // Bağlantı kopma olayını dinleyin socket.on('disconnect', () => { console.log('user disconnected'); // Kullanıcı bağlantıyı kestiğinde log yaz }); // 'chat message' olayını dinleyin socket.on('chat message', (msg) => { console.log('message: ' + msg); // Alınan mesajı logla // Mesajı tüm bağlı istemcilere yayınla io.emit('chat message', msg); }); }); // Port numarasını ortam değişkeninden veya varsayılan değerden alın const port = process.env.PORT || 3000; server.listen(port, () => { console.log(`Server running on port ${port}`); console.log(`Access it via http://localhost:${port} (direct) or via ServBay reverse proxy`); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43Kod Açıklamaları:
express
ile basit bir web sunucusu oluşturulup,index.html
dosyası sunuluyor.http.createServer(app)
ile standart bir HTTP sunucusu üretiliyor, Socket.io buraya bağlanıyor.socketIo(server)
ile Socket.io başlatılıp HTTP üzerine entegre ediliyor.io.on('connection', ...)
ile yeni istemci bağlantıları dinleniyor.socket.on('disconnect', ...)
ile kullanıcı bağlantı kesilince olay loglanıyor.socket.on('chat message', ...)
ile istemciden gelen'chat message'
isimli olaylar dinlenip verisi alınıyor.io.emit('chat message', msg)
ile alınan mesaj tüm bağlı istemcilere gönderiliyor.
İstemci Dosyası Oluşturma (
index.html
):servbay-socketio-chat
proje kök dizinindeindex.html
adında bir dosya oluşturun ve aşağıdaki kodu yapıştırın. Bu dosya, istemci tarafı HTML yapısı, stil ve Socket.io istemci JavaScript kodunu içerir. İstemci, sunucuya bağlanır, mesaj gönderir ve alınan mesajları ekranda gösterir.html<!DOCTYPE html> <html> <head> <title>ServBay Socket.io Chat</title> <style> body { margin: 0; padding-bottom: 3rem; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; } #form { background: rgba(0, 0, 0, 0.15); padding: 0.25rem; position: fixed; bottom: 0; left: 0; right: 0; display: flex; height: 3rem; box-sizing: border-box; backdrop-filter: blur(10px); } #input { border: none; padding: 0 1rem; flex-grow: 1; border-radius: 2rem; margin: 0.25rem; } #input:focus { outline: none; } #form > button { background: #333; border: none; padding: 0 1rem; margin: 0.25rem; border-radius: 3px; outline: none; color: #fff; } #messages { list-style-type: none; margin: 0; padding: 0; } #messages > li { padding: 0.5rem 1rem; } #messages > li:nth-child(odd) { background: #efefef; } .servbay-banner { background-color: #007bff; /* ServBay Mavisi */ color: white; text-align: center; padding: 15px 0; font-size: 22px; margin-bottom: 20px; font-weight: bold; } </style> </head> <body> <div class="servbay-banner">ServBay Socket.io Sohbet Demosuna Hoş Geldiniz!</div> <ul id="messages"></ul> <form id="form" action=""> <input id="input" autocomplete="off" /><button type="submit">Gönder</button> </form> <!-- Socket.io istemci kütüphanesini dahil edin --> <!-- Bu dosya Socket.io sunucusu tarafından çalışma anında otomatik oluşturulur --> <script src="/socket.io/socket.io.js"></script> <script> // Socket.io sunucusuna bağlan // İstemci ve sunucu aynı alan adı ve portta ise io() otomatik bağlanır var socket = io(); var form = document.getElementById('form'); var input = document.getElementById('input'); var messages = document.getElementById('messages'); // messages elementini alın form.addEventListener('submit', function(e) { e.preventDefault(); // Formun varsayılan gönderimini engelle if (input.value) { // 'chat message' olayını ve mesajı sunucuya gönder socket.emit('chat message', input.value); input.value = ''; // Girdi alanını temizle } }); // Sunucudan gelen 'chat message' olayını dinle socket.on('chat message', function(msg) { // Yeni bir liste elemanı oluşturup mesajı göster var item = document.createElement('li'); item.textContent = msg; // XSS saldırılarını önlemek için textContent kullan messages.appendChild(item); // Mesajı listeye ekle // En yeni mesaja kaydır window.scrollTo(0, document.body.scrollHeight); }); </script> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64Kod Açıklamaları:
- Sayfa, basit HTML yapısı ve ServBay marka renkleriyle bir üst banner, mesaj listesi (
ul#messages
) ve mesaj gönderme formu (form#form
) içerir. <script src="/socket.io/socket.io.js"></script>
ile Socket.io istemci kütüphanesi yüklenir. Bu dosya bizim tarafımızdan oluşturulmaz, Socket.io sunucusu çalıştırılınca otomatik olarak/socket.io/socket.io.js
yolunda sunulur.io()
ile Socket.io sunucusuna bağlantı başlar.- Formun gönderim olayında, varsayılan davranış engellenir ve
socket.emit('chat message', input.value)
ile mesaj sunucuya gönderilir. - Sunucudan gelen
'chat message'
olayları 메시aj listesine eklenir.
- Sayfa, basit HTML yapısı ve ServBay marka renkleriyle bir üst banner, mesaj listesi (
Böylece, Socket.io örnek projenizin temel kodlarını tamamladınız. Sıradaki adımlarla ServBay üzerinde bu projeyi nasıl çalıştıracağınızı göreceksiniz.
ServBay ile Projeyi Çalıştırmak (Geliştirme Modu)
Geliştirme aşamasında genellikle doğrudan Node.js sunucusunu çalıştırır ve ServBay’in ters proxy fonksiyonuyla bu sunucuyu bir yerel alan adına yönlendiririz.
Node.js Geliştirme Sunucusunu Başlatma:
Terminali açıp proje dizinine (
/Applications/ServBay/www/servbay-socketio-chat
) gidin ve şu komutu çalıştırıp sunucunuzu başlatın. Portu 8585 olarak belirledik, dilerseniz değiştirebilirsiniz.bashcd /Applications/ServBay/www/servbay-socketio-chat PORT=8585 node server.js
1
2Sunucu çalıştıktan sonra terminalde
Server running on port 8585
benzeri bir çıktı görülür. Şu anda sunucunuz yerelde 8585 portunu dinliyor olacak.ServBay’de Web Sitesini (Ters Proxy) Yapılandırma:
Yerel alan adı ile kolayca erişim sağlamak ve ServBay’in HTTPS/SSL fonksiyonlarını kullanmak için ServBay’de bir ters proxy sitesi oluşturmanız gerekir.
- ServBay kontrol panelini açın.
- “Web Siteleri” (eski adıyla: Ana Bilgisayarlar) bölümüne gidin.
- Yeni web sitesi ekle butonuna tıklayın.
- Şu şekilde yapılandırın:
- Ad (Name):
ServBay Socket.io Dev
(veya kolay ayırt edilecek başka bir isim) - Alan Adları (Domains):
servbay-socketio-dev.servbay.demo
(veya başka bir.servbay.demo
alan adı) - Web Site Türü (Type):
Ters Proxy (Reverse Proxy)
- Proxy Hedefi (Proxy Destination):
http://127.0.0.1:8585
(az önce başlattığınız Node.js sunucu adresi ve portu)
- Ad (Name):
- Yapılandırmayı kaydedin. ServBay, değişiklikleri otomatik uygular ve ilgili web sunucusunu (Caddy veya Nginx, yapılandırmanıza göre değişir) yeniden başlatabilir.
Not: Ters proxy Socket.io için çok önemlidir, çünkü sadece standart HTTP isteklerini yönlendirmez; aynı zamanda WebSocket protokolüyle yapılan upgrade el sıkışmalarını da taşır. ServBay’in varsayılan yapılandırmalarında WebSocket proxy desteği mevcuttur.
ServBay’de web sitesi eklemek için ayrıntılı adımları Node.js Geliştirme Web Sitesi Ekleme dökümanında bulabilirsiniz. Web siteniz için HTTPS’yi etkinleştirmek isterseniz Web Sitenizi SSL/TLS ile Korumak dökümanına bakabilirsiniz. ServBay User CA veya ServBay Public CA ile yerel SSL sertifikası oluşturabilir ve güvenebilirsiniz.
Geliştirme Modu Sitesine Erişim:
Tarayıcıda, ayarladığınız alan adını
https://servbay-socketio-dev.servbay.demo
olarak açın. Sohbet arayüzü görünmeli ve farklı sekme veya cihazlarda bu adresi açarak gerçek zamanlı sohbeti test edebilirsiniz.
ServBay ile Proje Dağıtımı (Üretim Modu)
Üretim ortamında, Node.js uygulamalarını arka planda güvenli şekilde çalıştırmak için (örn. PM2 veya forever gibi) bir süreç yöneticisi kullanmanız tavsiye edilir ve bunları ServBay ile entegre edebilirsiniz. Burada sadece ServBay ters proxy yapılandırmasını göstereceğiz. Node.js uygulamanızın arka planda sabit şekilde çalıştığını varsayıyoruz.
Node.js Üretim Sunucusunu Başlatma:
Üretim aşamasında, uygulamanızı bir süreç yöneticisiyle başlatmalısınız, böylece uygulamanız çökse bile otomatik yeniden başlar ve arka planda çalışmaya devam eder. Örneğin PM2 ile:
bash# PM2 yüklü değilse # npm install pm2 -g cd /Applications/ServBay/www/servbay-socketio-chat PORT=8586 NODE_ENV=production pm2 start server.js --name servbay-socketio-prod
1
2
3
4
5Bu komut PM2 ile
server.js
’yi 8586 portunda,NODE_ENV=production
ile başlatır. Süreç yöneticisi uygulamanın arka planda kalmasını ve olası hatalarda yeniden başlamasını sağlar.ServBay’de Üretim Sitesi (Ters Proxy) Yapılandırma:
Geliştirme modundaki gibi, üretim portunda çalışan Node.js uygulamanızı gösterecek yeni bir ters proxy sitesi oluşturun.
- ServBay kontrol panelini açın.
- “Web Siteleri” bölümüne ilerleyin.
- Yeni web sitesi ekle butonuna tıklayın.
- Şu şekilde yapılandırın:
- Ad (Name):
ServBay Socket.io Prod
(veya başka bir ayırt edici ad) - Alan Adları (Domains):
servbay-socketio-prod.servbay.demo
(veya başka bir.servbay.demo
alan adı) - Web Site Türü (Type):
Ters Proxy (Reverse Proxy)
- Proxy Hedefi (Proxy Destination):
http://127.0.0.1:8586
(üretim modunda çalışan Node.js sunucunuzun portu)
- Ad (Name):
- Yapılandırmayı kaydedin.
Üretim Modu Sitesine Erişim:
Tarayıcıdan üretim modunda ayarladığınız alan adını
https://servbay-socketio-prod.servbay.demo
olarak açabilirsiniz.
ServBay’in ters proxy desteği sayesinde, ister geliştirme ister üretim modunda olsun, birden fazla Node.js uygulamasını kolayca yönetebilir, her biri için özel alan adları ve SSL sertifikaları atayabilir ve sistem hosts dosyasını ya da ileri seviye web sunucu yapılandırmalarını manuel olarak düzenlemenize gerek kalmadan çalıştırabilirsiniz.
ServBay’in Sunduğu Veritabanlarına Bağlanma
ServBay; MySQL, MariaDB, PostgreSQL, MongoDB ve Redis gibi çeşitli veritabanı paketlerini destekler. Socket.io uygulamanızda bu veritabanlarıyla kullanıcı verisi veya mesaj geçmişi gibi bilgileri tutmak isteyebilirsiniz. Aşağıda Node.js ile bu veritabanlarına nasıl bağlanabileceğinize dair örnekler bulabilirsiniz.
Önemli: Aşağıdaki kodları çalıştırmadan önce ilgili veritabanı paketini ServBay kontrol panelinden kurup başlattığınızdan emin olun. Veritabanı bağlantı detaylarınızı (port, kullanıcı adı, şifre, vb.) ServBay’in veritabanı yönetim arayüzünde veya dökümantasyonda bulabilirsiniz. Örneğin, MySQL/MariaDB için root kullanıcısı şifresi genellikle kurulum sırasında belirlediğinizdir. Ayrıca ServBay aracıyla root şifresini sıfırlayabilirsiniz.
MongoDB’ye Bağlanma:
Mongoose ODM’yi (veya resmi
mongodb
sürücüsü) yükleyin:bashnpm install mongoose
1Bağlantı kodunu Node.js dosyanıza (örneğin
server.js
veya ayrı bir modüle) ekleyin:javascriptconst mongoose = require('mongoose'); // Varsayılan olarak yerelde çalışmakta olan MongoDB’ye bağlanılır (27017 MongoDB varsayılan portudur) // Database adı örnek olarak servbay_socketio_app mongoose.connect('mongodb://localhost:27017/servbay_socketio_app', { useNewUrlParser: true, useUnifiedTopology: true, // Gerekirse user ve pass ile yetkilendirme bilgisi eklenebilir // user: 'your_mongo_user', // pass: 'your_mongo_password' }) .then(() => console.log('MongoDB başarıyla Mongoose üzerinden bağlandı')) .catch(err => console.error('MongoDB bağlantı hatası:', err)); // Şimdi mongoose.model() ile şema ve modeli tanımlayabilirsiniz // ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Redis’e Bağlanma:
redis
istemci kütüphanesini kurun:bashnpm install redis
1Bağlantı kodunu ekleyin:
javascriptconst redis = require('redis'); // Redis istemci örneği oluşturun, varsayılan olarak localhost:6379 (Redis varsayılan portu) const client = redis.createClient({ // Eğer Redis parola isterse // password: 'your_redis_password', // url: 'redis://localhost:6379' // veya URL formatını kullanın }); client.on('error', (err) => { console.error('Redis bağlantı hatası:', err); }); client.on('connect', () => { console.log('Redis istemcisi başarıyla bağlandı'); }); // Redis sunucusuna bağlan client.connect(); // v4+ için connect() çağrılması gerekir // Artık client objesi üzerinden Redis komutları çalıştırabilirsiniz // Örneğin: await client.set('mykey', 'myvalue'); // ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23MariaDB / MySQL’e Bağlanma:
ServBay hem MariaDB hem MySQL’i destekler. Bağlantı şekli aynıdır. Burada
mariadb
kütüphanesiyle örnek veriyoruz (aynı zamanda MySQL ile uyumludur).mariadb
istemci kütüphanesini kurun:bashnpm install mariadb
1Bağlantı kodunu ekleyin:
javascriptconst mariadb = require('mariadb'); // Bağlantı havuzu oluşturun const pool = mariadb.createPool({ host: 'localhost', port: 3306, // MariaDB/MySQL varsayılan port user: 'root', // ServBay’de genellikle root kullanıcı adı kullanılır password: 'password', // root şifresini ServBay’de belirlediklerinizden girin database: 'servbay_socketio_app', // örnek veri tabanınız connectionLimit: 5 // havuzda izin verilen eşzamanlı bağlantı sayısı }); // Bağlantı havuzundan bir bağlantı alın ve test edin pool.getConnection() .then(conn => { console.log("MariaDB/MySQL'e başarıyla bağlandı"); conn.release(); // Bağlantıyı havuza geri bırak // Artık pool üzerinden sorgular çalıştırabilirsiniz // Örneğin: await pool.query("SELECT 1"); // ... }) .catch(err => { console.error("MariaDB/MySQL bağlantı hatası:", err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Not:
password
değerini, ServBay’de root kullanıcı için belirlediğiniz gerçek şifreyle değiştirmelisiniz. Uygulamanız için özel veritabanı kullanıcısı oluşturmanız önerilir, root’u doğrudan kullanmayın.PostgreSQL’e Bağlanma:
pg
istemci kütüphanesini kurun:bashnpm install pg
1Bağlantı kodunu ekleyin:
javascriptconst { Pool } = require('pg'); // Bağlantı havuzu oluşturun const pool = new Pool({ user: 'user', // PostgreSQL’de varsayılan kullanıcı adı user’dır host: 'localhost', database: 'servbay_socketio_app', // örnek veri tabanınız password: 'password', // ServBay’de belirlediğiniz PostgreSQL şifresi port: 5432, // PostgreSQL varsayılan portu }); // Havuzdan bağlantı alın ve test edin pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL bağlantı hatası:', err); return; } console.log('PostgreSQL'e başarıyla bağlandı'); client.release(); // Bağlantıyı havuza bırak // Artık pool üzerinden veritabanı sorguları çalıştırabilirsiniz // Örneğin: pool.query('SELECT NOW()', (err, res) => { ... }); // ... });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Not:
user
vepassword
alanlarını, ServBay’de oluşturduğunuz gerçek PostgreSQL kullanıcı adı ve şifresiyle değiştirmeyi unutmayın.
Bu veritabanlarını entegre ederek Socket.io uygulamanızda verileri kalıcı tutabilir, çok daha gelişmiş fonksiyonlar oluşturabilirsiniz. ServBay ile Node.js ve çok çeşitli veritabanlarından oluşan geliştirme ortamı dakikalar içinde hazır olur.
Dikkat Edilmesi Gerekenler
- Port Çakışması: Node.js uygulamanızın kullandığı portun (örneklerde 8585 veya 8586) başka bir uygulama tarafından kullanılmadığından emin olun. Çakışma halinde
PORT
değerini değiştirin. - ServBay Web Sitesi Yapılandırması: ServBay’de ters proxy web sitesi yapılandırdıktan sonra, yapılandırmanın uygulanması için ilgili web sunucusunun (Caddy veya Nginx) başarıyla yeniden başlatıldığından emin olun.
- WebSocket Proxy’si: ServBay’in ters proxy yapılandırması WebSocket protokolünü otomatik olarak destekler. WebSocket bağlantı sorununda ServBay’in web sunucusu loglarını veya yapılandırmasını inceleyin, proxy ayarlarının doğru olduğunu kontrol edin.
- Güvenlik Duvarı: İşletim sisteminizin güvenlik duvarının, ServBay’in kullandığı portlar (örn. 80, 443) veya Node.js uygulama portlarının kullanılmasını engellemediğinden emin olun.