Erstellung und Ausführung eines Socket.io-Projekts
Was ist Socket.io?
Socket.io ist eine JavaScript-Bibliothek für bidirektionale, ereignisgesteuerte Echtzeitkommunikation. Es kann eine effiziente, latenzarme Kommunikationskanal zwischen Browser und Server aufbauen. Socket.io unterstützt das WebSocket-Protokoll, ist jedoch nicht darauf beschränkt, es kann auch automatisch den besten Übertragungsmechanismus (wie Long Polling) auswählen, um die Stabilität der Verbindung sicherzustellen.
Hauptmerkmale und Vorteile von Socket.io
- Echtzeitkommunikation: Unterstützt bidirektionale Echtzeitkommunikation, geeignet für Chat-Räume, Online-Spiele, Echtzeit-Benachrichtigungen und mehr.
- Plattformübergreifende Unterstützung: Kann im Browser, in Node.js und auf anderen Plattformen laufen.
- Automatische Wiederverbindung: Versucht automatisch, die Verbindung bei Unterbrechung wiederherzustellen.
- Ereignisgesteuert: Kommunikation über Ereignismechanismen, was das Programmiermodell vereinfacht.
- Hohe Kompatibilität: Unterstützt verschiedene Übertragungsmechanismen wie WebSocket, XHR Long Polling und so weiter, um sicherzustellen, dass es in verschiedenen Netzwerkumgebungen funktioniert.
Mit Socket.io können Entwickler schnell effiziente Echtzeitkommunikationsanwendungen erstellen.
Erstellung und Ausführung eines Socket.io-Projekts mit ServBay
In diesem Artikel verwenden wir die von ServBay bereitgestellte Node.js-Umgebung, um ein Socket.io-Projekt zu erstellen und auszuführen. Wir nutzen die 'Host'-Funktion von ServBay, um den Webserver einzurichten und den Zugriff auf das Projekt durch Reverse Proxy zu ermöglichen.
Erstellung eines Socket.io-Projekts
Projekt initialisieren
Stellen Sie zunächst sicher, dass Sie die von ServBay bereitgestellte Node.js-Umgebung installiert haben. Erstellen Sie dann im empfohlenen Web-Stammverzeichnis von ServBay
/Applications/ServBay/www
ein neues Socket.io-Projekt:bashcd /Applications/ServBay/www mkdir servbay-socketio-app cd servbay-socketio-app npm init -y npm install express socket.io
1
2
3
4
5Serverdatei erstellen
Erstellen Sie im Projektstammverzeichnis eine Datei namens
server.js
und fügen Sie den folgenden Code hinzu: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
26Kundendatei erstellen
Erstellen Sie im Projektstammverzeichnis eine Datei namens
index.html
und fügen Sie den folgenden Code hinzu: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
Wechseln in den Entwicklungsmodus
Entwicklungsserver ausführen
Starten Sie den Entwicklungsserver und geben Sie den Port an (z.B.: 8585):
bashPORT=8585 node server.js
1Dies startet einen lokalen Entwicklungsserver und öffnet den Port 8585.
ServBay Host Reverse Proxy konfigurieren
Verwenden Sie die 'Host'-Funktion von ServBay, um über einen Reverse Proxy auf den Entwicklungsserver zuzugreifen. Fügen Sie in den 'Host'-Einstellungen von ServBay einen neuen Reverse Proxy hinzu:
- Name:
My first Socket.io dev site
- Domain:
servbay-socketio-test.dev
- Host-Typ:
Reverse Proxy
- IP:
127.0.0.1
- Port:
8585
Detaillierte Einrichtung finden Sie unter Hinzufügen einer Nodejs-Entwicklungswebsite.
- Name:
Zugriff auf den Entwicklungsmodus
Öffnen Sie den Browser und rufen Sie
https://servbay-socketio-test.dev
auf, um das Projekt in Echtzeit anzusehen. Dank der Unterstützung von ServBay für benutzerdefinierte Domains und kostenlose SSL-Zertifikate genießen Sie eine höhere Sicherheit.
Bereitstellung der Produktionsversion
Produktionsumgebung vorbereiten
Stellen Sie sicher, dass Ihr Projekt in der Produktionsumgebung reibungslos läuft. In der Regel benötigt ein Socket.io-Projekt keine speziellen Build-Schritte, aber Sie müssen möglicherweise einige Umgebungsvariablen festlegen oder andere Konfigurationen vornehmen.
Produktionsserver ausführen
Starten Sie den Produktionsserver und geben Sie den Port an (z.B.: 8586):
bashPORT=8586 NODE_ENV=production node server.js
1ServBay Host Reverse Proxy konfigurieren
Verwenden Sie die 'Host'-Funktion von ServBay, um über einen Reverse Proxy auf den Produktionsserver zuzugreifen. Fügen Sie in den 'Host'-Einstellungen von ServBay einen neuen Reverse Proxy hinzu:
- Name:
My first Socket.io production site
- Domain:
servbay-socketio-test.prod
- Host-Typ:
Reverse Proxy
- IP:
127.0.0.1
- Port:
8586
- Name:
Zugriff auf den Produktionsmodus
Öffnen Sie den Browser und rufen Sie
https://servbay-socketio-test.prod
auf, um die Produktionsversion anzusehen. Mit benutzerdefinierten Domains und kostenlosen SSL-Zertifikaten von ServBay wird Ihre Website sicherer und vertrauenswürdiger.
Datenbankverbindung
ServBay unterstützt Redis, MariaDB, PostgreSQL und MongoDB. Im Folgenden finden Sie Beispiele zur Verbindung mit diesen Datenbanken.
Verbindung zu MongoDB
Installieren Sie
mongoose
:bashnpm install mongoose
1Importieren und verbinden Sie dann in Ihrem Projekt:
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
5Verbindung zu Redis
Installieren Sie
redis
:bashnpm install redis
1Importieren und verbinden Sie dann in Ihrem Projekt:
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
10Verbindung zu MariaDB
Installieren Sie
mariadb
:bashnpm install mariadb
1Importieren und verbinden Sie dann in Ihrem Projekt:
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
16Verbindung zu PostgreSQL
Installieren Sie
pg
:bashnpm install pg
1Importieren und verbinden Sie dann in Ihrem Projekt:
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
Durch diese Schritte haben Sie erfolgreich ein Socket.io-Projekt erstellt und ausgeführt und die von ServBay bereitgestellten Funktionen genutzt, um Ihr Projekt zu verwalten und darauf zuzugreifen, sowie Verbindungen zu verschiedenen Datenbanken hergestellt.