Socket.io Projesi Oluşturma ve Çalıştırma
Socket.io Nedir?
Socket.io, tarayıcı ile sunucu arasında verimli, düşük gecikmeli iletişim kanalları kurmak için kullanılan çift yönlü gerçek zamanlı olay tabanlı bir JavaScript kütüphanesidir. Socket.io, WebSocket protokolünü destekler ancak bununla sınırlı değildir ve bağlantının istikrarını sağlamak için en iyi aktarım mekanizmasını (örneğin, uzun anketleme) otomatik olarak seçer.
Socket.io'nun Temel Özellikleri ve Avantajları
- Gerçek Zamanlı İletişim: Sohbet odaları, çevrimiçi oyunlar, gerçek zamanlı bildirimler gibi uygulama senaryoları için gerçek zamanlı çift yönlü iletişimi destekler.
- Çapraz Platform Desteği: Tarayıcı, Node.js ve diğer platformlarda çalışabilir.
- Otomatik Yeniden Bağlanma: Bağlantı kesildiğinde otomatik olarak yeniden bağlanmayı dener.
- Olay Tabanlı: Olay mekanizması ile iletişim kurar, programlama modelini sadeleştirir.
- Yüksek Uyumluluk: WebSocket, XHR uzun anketleme gibi çeşitli aktarım mekanizmalarını destekler ve her türlü ağ ortamında düzgün çalışmayı sağlar.
Socket.io kullanarak, geliştiriciler verimli gerçek zamanlı iletişim uygulamaları oluşturabilir.
ServBay Kullanarak Socket.io Projesi Oluşturma ve Çalıştırma
Bu makalede, ServBay tarafından sağlanan Node.js ortamını kullanarak bir Socket.io projesi oluşturup çalıştıracağız. ServBay'in "host" özelliğini kullanarak bir Web sunucusu kuracağız ve projenin erişimini bir ters proxy üzerinden gerçekleştireceğiz.
Socket.io Projesi Oluşturma
Projeyi Başlatma
Öncelikle, ServBay tarafından sağlanan Node.js ortamını kurduğunuzdan emin olun. Ardından, ServBay önerilen web root dizininde
/Applications/ServBay/www
yeni bir Socket.io projesi oluşturun:bashcd /Applications/ServBay/www mkdir servbay-socketio-app cd servbay-socketio-app npm init -y npm install express socket.io
1
2
3
4
5Sunucu Dosyası Oluşturma
Proje anadizininde bir
server.js
dosyası oluşturun ve aşağıdaki kodları ekleyin:javascriptconst express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const app = express(); const server = http.createServer(app); const io = socketIo(server); app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); io.on('connection', (socket) => { console.log('a user connected'); socket.on('disconnect', () => { console.log('user disconnected'); }); socket.on('chat message', (msg) => { io.emit('chat message', msg); }); }); const port = process.env.PORT || 3000; server.listen(port, () => { console.log(`Server running on port ${port}`); });
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
26Client Dosyası Oluşturma
Proje anadizininde bir
index.html
dosyası oluşturun ve aşağıdaki kodları ekleyin:html<!DOCTYPE html> <html> <head> <title>Socket.io Chat with ServBay</title> <style> ul { list-style-type: none; padding: 0; } li { padding: 8px; margin-bottom: 10px; background-color: #f3f3f3; } input { padding: 10px; width: 300px; } button { padding: 10px; } .servbay-banner { background-color: #4CAF50; color: white; text-align: center; padding: 10px 0; font-size: 20px; margin-bottom: 20px; } </style> </head> <body> <div class="servbay-banner">Welcome to ServBay Socket.io Chat!</div> <ul id="messages"></ul> <form id="form" action=""> <input id="input" autocomplete="off" /><button>Send</button> </form> <script src="/socket.io/socket.io.js"></script> <script> var socket = io(); var form = document.getElementById('form'); var input = document.getElementById('input'); form.addEventListener('submit', function(e) { e.preventDefault(); if (input.value) { socket.emit('chat message', input.value); input.value = ''; } }); socket.on('chat message', function(msg) { var item = document.createElement('li'); item.textContent = msg; document.getElementById('messages').appendChild(item); 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
Geliştirme Moduna Geçiş
Geliştirme Sunucusunu Çalıştırma
Geliştirme sunucusunu başlatın ve portu belirleyin (örneğin: 8585):
bashPORT=8585 node server.js
1Bu, yerel olarak bir geliştirme sunucusunu başlatacak ve 8585 portunu açacaktır.
ServBay Host Ters Proxy Konfigürasyonu
ServBay'in "host" işlevini kullanarak geliştirme sunucusuna ters proxy ile erişin. ServBay "host" ayarlarında yeni bir ters proxy ekleyin:
- Adı:
My first Socket.io dev site
- Alan Adı:
servbay-socketio-test.dev
- Host Türü:
Ters Proxy
- IP:
127.0.0.1
- Port:
8585
Ayrıntılı ayar adımları için Nodejs geliştirme web sitesini ekleyin dokümanına bakın.
- Adı:
Geliştirme Moduna Erişim
Tarayıcıyı açın ve
https://servbay-socketio-test.dev
adresine gidin; projeyi gerçek zamanlı olarak gözlemleyin. ServBay tarafından sağlanan özelleştirilmiş alan adı ve ücretsiz SSL sertifikası sayesinde daha yüksek güvenlikten faydalanacaksınız.
Üretim Modunu Dağıtma
Üretim Ortamını Hazırlama
Projelerinizin üretim ortamında düzgün çalıştığından emin olun. Genellikle, Socket.io projesi özel bir yapı aşamasına ihtiyaç duymaz, ancak bazı ortam değişkenlerini ayarlamanız veya başka konfigürasyonlar yapmanız gerekebilir.
Üretim Sunucusunu Çalıştırma
Üretim sunucusunu başlatın ve portu belirleyin (örneğin: 8586):
bashPORT=8586 NODE_ENV=production node server.js
1ServBay Host Ters Proxy Konfigürasyonu
ServBay'in "host" işlevini kullanarak üretim sunucusuna ters proxy ile erişin. ServBay "host" ayarlarında yeni bir ters proxy ekleyin:
- Adı:
My first Socket.io production site
- Alan Adı:
servbay-socketio-test.prod
- Host Türü:
Ters Proxy
- IP:
127.0.0.1
- Port:
8586
- Adı:
Üretim Moduna Erişim
Tarayıcıyı açın ve
https://servbay-socketio-test.prod
adresine gidin; üretim versiyonunu gözlemleyin. ServBay'in özelleştirilmiş alan adı ve ücretsiz SSL sertifikası sayesinde web siteniz daha yüksek güvenlik ve güvenilirliğe sahip olacaktır.
Veritabanı Bağlantısı
ServBay, Redis, MariaDB, PostgreSQL ve MongoDB veritabanı desteği sunar. İşte bu veritabanlarına nasıl bağlanacağınızla ilgili örnekler.
MongoDB'ye Bağlanma
mongoose
kurun:bashnpm install mongoose
1Ardından projede dahil edip bağlantı yapın:
javascriptconst mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/servbay-socketio-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB connected')) .catch(err => console.log(err));
1
2
3
4
5Redis'e Bağlanma
redis
kurun:bashnpm install redis
1Ardından projede dahil edip bağlantı yapın:
javascriptconst redis = require('redis'); const client = redis.createClient(); client.on('error', function (err) { console.log('Error ' + err); }); client.on('connect', function () { console.log('Redis client connected'); });
1
2
3
4
5
6
7
8
9
10MariaDB'ye Bağlanma
mariadb
kurun:bashnpm install mariadb
1Ardından projede dahil edip bağlantı yapın:
javascriptconst mariadb = require('mariadb'); const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_socketio_app' }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); //release to pool }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16PostgreSQL'e Bağlanma
pg
kurun:bashnpm install pg
1Ardından projede dahil edip bağlantı yapın:
javascriptconst { Pool } = require('pg'); const pool = new Pool({ user: 'user', host: 'localhost', database: 'servbay_socketio_app', password: 'password', port: 5432, }); pool.connect((err, client, done) => { if (err) throw err; console.log('Connected to PostgreSQL'); done(); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Yukarıdaki adımlarla, Socket.io projesini başarıyla oluşturup çalıştırdınız ve ServBay'in sunduğu özellikleri kullanarak projenizi yönettiniz ve eriştiniz; ayrıca çeşitli veritabanlarına bağlandınız.