diff --git a/public/js/client_dbrd.js b/public/js/client_dbrd.js
index 4809ed9..27f309c 100755
--- a/public/js/client_dbrd.js
+++ b/public/js/client_dbrd.js
@@ -362,3 +362,224 @@ if (arrayItem.agt){
});
console.log(items.get());
+
+
+
+ /* ########################### */
+/* ######## SOCKET.IO ######## */
+/* ########################### */
+
+// Websocket
+var socket = io('/dbrd');
+
+// Wachen-ID bei Connect an Server senden
+socket.on('connect', function () {
+ socket.emit('dbrd', dbrd_uuid);
+ $('#waipModal').modal('hide');
+ // TODO: bei Reconnect des Clients durch Verbindungsabbruch, erneut Daten anfordern
+});
+
+socket.on('connect_error', function (err) {
+ $('#waipModalTitle').html('FEHLER');
+ $('#waipModalBody').html('Verbindung zum Server getrennt!');
+ $('#waipModal').modal('show');
+});
+
+// ID von Server und Client vergleichen, falls ungleich -> Seite neu laden
+socket.on('io.version', function (server_id) {
+ if (client_id != server_id) {
+ $('#waipModal').modal('hide');
+ setTimeout(function () {
+ $('#waipModalTitle').html('ACHTUNG');
+ $('#waipModalBody').html('Neue Server-Version. Seite wird in 10 Sekunden neu geladen!');
+ $('#waipModal').modal('show');
+ setTimeout(function () {
+ location.reload();
+ }, 10000);
+ }, 1000);
+ };
+});
+
+// ggf. Fehler ausgeben
+socket.on('io.error', function (data) {
+ console.log('Error:', data);
+});
+
+
+// Daten löschen, Uhr anzeigen
+socket.on('io.standby', function (data) {
+ // Einsatz-ID auf 0 setzen
+ waip_id = null;
+ // TODO: Wenn vorhanden, hier #hilfsfrist zurücksetzen
+ $('#einsatz_art').removeClass(function (index, className) {
+ return (className.match(/(^|\s)bg-\S+/g) || []).join(' ');
+ });
+ $('#einsatz_stichwort').removeClass();
+ $('#einsatz_stichwort').html('');
+ $('#sondersignal').removeClass();
+ $('#ortsdaten').html('');
+ $('#besonderheiten').html('');
+ $('#em_alarmiert').empty();
+ $('#em_weitere').html('');
+ reset_rmld();
+ map.setView(new L.LatLng(0, 0), 14);
+ // Tareset_responsebleau ausblenden
+ $('#waiptableau').addClass('d-none');
+ $('#waipclock').removeClass('d-none');
+ // Text anpassen
+ resize_text();
+});
+
+// Einsatzdaten laden, Wachalarm anzeigen
+socket.on('io.neuerEinsatz', function (data) {
+ // DEBUG
+ console.log(data);
+ // Einsatz-ID speichern
+ waip_id = data.id;
+ // Hintergrund der Einsatzart zunächst entfernen
+ $('#einsatz_art').removeClass(function (index, className) {
+ return (className.match(/(^|\s)bg-\S+/g) || []).join(' ');
+ });
+ // Icon der Einsatzart enfernen
+ $('#einsatz_stichwort').removeClass();
+ // Art und Stichwort festlegen hinterlegen
+ switch (data.einsatzart) {
+ case 'Brandeinsatz':
+ $('#einsatz_art').addClass('bg-danger');
+ $('#einsatz_stichwort').addClass('ion-md-flame');
+ $('#rueckmeldung').removeClass('d-none');
+ break;
+ case 'Hilfeleistungseinsatz':
+ $('#einsatz_art').addClass('bg-info');
+ $('#einsatz_stichwort').addClass('ion-md-construct');
+ $('#rueckmeldung').removeClass('d-none');
+ break;
+ case 'Rettungseinsatz':
+ $('#einsatz_art').addClass('bg-warning');
+ $('#einsatz_stichwort').addClass('ion-md-medkit');
+ break;
+ case 'Krankentransport':
+ $('#einsatz_art').addClass('bg-success');
+ $('#einsatz_stichwort').addClass('ion-md-medical');
+ break;
+ default:
+ $('#einsatz_art').addClass('bg-secondary');
+ $('#einsatz_stichwort').addClass('ion-md-information-circle');
+ };
+ $('#einsatz_stichwort').html(' ' + data.stichwort);
+ // Sondersignal setzen
+ $('#sondersignal').removeClass();
+ switch (data.sondersignal) {
+ case 1:
+ $('#sondersignal').addClass('ion-md-notifications');
+ break;
+ default:
+ $('#sondersignal').addClass('ion-md-notifications-off');
+ };
+ // Ortsdaten zusammenstellen und setzen
+ var small_ortsdaten;
+ small_ortsdaten = '';
+ if (data.objekt) {
+ small_ortsdaten = small_ortsdaten + break_text_15(data.objekt) + '
';
+ };
+ if (data.ort) {
+ small_ortsdaten = small_ortsdaten + break_text_15(data.ort) + '
';
+ };
+ if (data.ortsteil) {
+ small_ortsdaten = small_ortsdaten + break_text_15(data.ortsteil) + '
';
+ };
+ if (data.strasse) {
+ small_ortsdaten = small_ortsdaten + break_text_15(data.strasse) + '
';
+ };
+ if (small_ortsdaten.substr(small_ortsdaten.length - 4) == '
') {
+ small_ortsdaten = small_ortsdaten.slice(0, -4);
+ };
+ $('#ortsdaten').html(small_ortsdaten);
+ // Besonderheiten setzen
+ $('#besonderheiten').html(break_text_35(data.besonderheiten));
+ // alarmierte Einsatzmittel setzen
+ $('#em_alarmiert').empty();
+ var data_em_alarmiert = JSON.parse(data.em_alarmiert);
+ for (var i in data_em_alarmiert) {
+ var tmp = data_em_alarmiert[i].name.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-');
+ $('#em_alarmiert').append('