Forum: PC-Programmierung ASP.NET ServerSendEvents MVC


von Arnold (Gast)


Lesenswert?

Hi,

ich habe mir im Internet eine Methode gesucht um zu lernen wie man 
ServerSendEvents also Dynamisches nachliefern von Daten realisieren 
kann...
hierfür habe ich folgende C# Methode gefunden:
1
        private static BlockingCollection<string> _data = new BlockingCollection<string>();
2
3
        static HomeController()
4
        {
5
            _data.Add("started");
6
            for (int i = 0; i < 10; i++)
7
            {
8
                _data.Add("item" + i.ToString());
9
            }
10
            _data.Add("ended");
11
        }
12
13
        public ActionResult Message()
14
        {
15
            var result = string.Empty;
16
            var sb = new StringBuilder();
17
            if (_data.TryTake(out result, TimeSpan.FromMilliseconds(100)))
18
            {
19
                JavaScriptSerializer ser = new JavaScriptSerializer();
20
                var serializedObject = ser.Serialize(new { item = result, message = "hello" });
21
                sb.AppendFormat("data: {0}\n\n", serializedObject);
22
            }
23
            return Content(sb.ToString(), "text/event-stream");
24
        }

und dazu Passendes HTML
1
<script>
2
    function contentLoaded() {
3
4
        var source = new EventSource('message');
5
        //var source = new EventSource('home/message');
6
        var ul = document.getElementById("messages");
7
8
9
        console.log(source);
10
11
        source.onmessage = function (e) {
12
13
14
15
            var li = document.createElement("li");
16
            /*
17
            var returnedItem = e.data
18
            */
19
20
            li.textContent = e.data; //returnedItem.message + ' ' + returnedItem.item;
21
22
            ul.appendChild(li);
23
        }
24
    }
25
26
    window.addEventListener("DOMContentLoaded", contentLoaded, false);
27
</script>
28
29
<ul id="messages"></ul>


soweit so gut...
nun sendet mir der Server alle 3 Sekunden eine Nachricht <- eben von den 
10...

jetzt frag ich mich: "woher kommen die 3 Sekunden" und kann ich das 
steuern?
So wie ich das verstehe, arbeitet das EventSource mit einer art 
LongPolling, d.h. es wartet, wann neue Infos kommen...
=> ABER, ich kann nichts erkennen, was mit meine "Message()" aufruft 
oder triggert!?
... mit einem Sleep kann ich das ganze verzögern, aber ich will das ja 
beschleunigen, oder eben nur dann haben wenn auch Nachrichten kommen, 
dafür aber INSTANT.

Wäre sehr Nett, wenn mir das jemand "erklären" kann ;)

danke vielmals
arni

von T.roll (Gast)


Lesenswert?

Du willst den Server doch hoffentlich nicht ins Netz stellen?

von Arnold (Gast)


Lesenswert?

witziger Name...

dass hier eine ASP Allergie herrscht ist mir bewusst, aber lasst die 
schwachsinnigen Kommentare...
entweder wollt ihr mir helfen oder lasst es bleiben!

von T.roll (Gast)


Lesenswert?

Arnold schrieb:
> witziger Name...

Danke!

Arnold schrieb:
> ASP Allergie herrscht

Ist ja auch verständlich. Gerade erst wurde wieder ein gigantisches 
Mining-Botnet mit hunderttausenden infizierten Windows-Servern entdeckt.

Arnold schrieb:
> die schwachsinnigen Kommentare...
Das war mein voller ernst.

von Arnold (Gast)


Lesenswert?

@T.roll
pass auf, wenn du Ahnung hast, dann kannst du mir helfen... dann nehm 
ich auch deine Belehrungen ernst...

wenn du hier deinen Namen zum Programm machen willst, ignoriere ich 
deine "bislang maximal schwachsinnigen Kommentare" denn die größten 
Botnetze sind auf Linuxbasis :P

Es geht mir nicht in den Kopf, dass Menschen nichts besseres zu tun 
haben als ohne irgendwelche Rahmenbedingungen zu kennen, zwar nicht 
helfen zu wollen, aber irgendein Bashing betreiben müssen (macht das 
irgendwie Glücklich? 20 mal am Tag irgendwelche Menschen geärgert ist 
ein guter Tag? ... ärger dich selbst oder bring dein Leben auf die 
Reihe).
=> Ein gut konfigurierter Windows-Server 2016 ist definitiv mit 
Hardware-Firewall & Co. ist definitiv sicherer als so manch ein Linux 
Server!
Abgesehen davon spreche ich von einem dedizierten Applikationsserver 
welcher sich in einem abgetrennten VLAN befindet ^^.

aber bevor ich mich jetzt weiterhin "rechtfertige" ... wer mit Lösungen 
kommt, kann auch mit "Warnungen" kommen. Wer einen IQ-Wert über sein 
Alter hat, fragt aber erstmal nach Rahmenbedingungn, bevor er etwas als 
definitiv "Unsicher" definiert ^^

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.