Laden...

Server Sent Events: Von Javascript zu C#, aber wie?

Erstellt von clkdiv vor 2 Jahren Letzter Beitrag vor 2 Jahren 673 Views
Thema geschlossen
C
clkdiv Themenstarter:in
2 Beiträge seit 2022
vor 2 Jahren
Server Sent Events: Von Javascript zu C#, aber wie?

Hallo liebe Leute,

kann mir jemand beim Übersetzen eines Javascripts in C# helfen? Es geht um folgendes:

Ich habe eine Kamera, auf der läuft eine REST API. In der API-Dokumentation wird erklärt, dass man mit JavaScript einen Consumer für Server Sent Events registrieren kann:

Events

With server-sent-events it is possible for the camera to send asynchronous notifications when long running operations complete, or parameters change in the API. This is done by pushing events to the web browser.

Using Javascript, a browser can subscribe to the HTML5 Server-Sent-Events stream by creating a new EventSource on the /control/subscribe endpoint, and then using the addEventListener function to receive events.


function onNotifyEvent(data) {
  document.getElementById("result").innerText = JSON.parse(data);
}
var evtSource = new EventSource("/control/subscribe");
evtSource.addEventListener("notify", function(event) {onNotifyEvent(event.data);});

Ich kann einigermaßen c# programmieren, aber hier komme ich nicht weiter. Wie müsste ich das in C# angehen? Ganz herzlichen Dank!

Martin...

16.834 Beiträge seit 2008
vor 2 Jahren

Hi,

das Forum ist an für sich kein Quellcode-Generator. Du musst Dich also zumindest ein bisschen damit beschäftigen.
[Hinweis] Wie poste ich richtig?
Google hilft hier gut: Google Suche nach "javascript EventSource c#"

TLDR; nativ gibts dafür nichts, weil .NET anders funktioniert als JavaScript.
Blazor als Client Side Framework unterstützt selbst aber kein SSE, wenn dann SignalR.
In Blazor selbst kannst Du aber JavaScript-Funktionen verwenden.

Da SSE aber auf einem "ewigen Stream" basiert, kannst Du sowas eben mit einem ewig offenen Stream selbst umsetzen.

Alternative: selbst was schreiben.

C
clkdiv Themenstarter:in
2 Beiträge seit 2022
vor 2 Jahren

Hallo und danke für die Antwort.

Habe ich einen Quellcode-Generator erwartet? Ich hatte doch geschrieben, dass ich es nicht schaffe, daraus kann man ablesen, dass ich es versucht habe, stundenlang. Deine Google-Suche und ähnliche hatte ich versucht, hilft aber nicht. Es gibt verschiedene Ansätze, einige davon funktionieren, sind aber nicht wirklich Event-basiert.

Über ein anderes Forum (Javascript) habe ich aber schon eine Stups bekommen. Wer diesen Fred also hier findet, eine Lösung ist hier.

Die hätte ich auch gefunden, wenn ich (fälschlicherweise) nach "server side events" gesucht hätte, die aber (richtigerweise) "server sent events" heißen. Beides SSE.

Die Lösung ist nativ in C# ohne irgendein Framework etc, ohne Javascript. Trotzdem vielen Dank für deine Hilfe, auch wenn es ja keine Antwort war.

16.834 Beiträge seit 2008
vor 2 Jahren

Da Du selbst sagst, dass Du auch in einem anderen Forum nach Hilfe mit dem gleichen Thema suchst, ist hier zu.
Cross Posts sind in keinem Forum erlaubt.
[Hinweis] Wie poste ich richtig? 2.2 Keine Crossposts

Sollte es kein Cross Post sein (obwohl Du es ja selbst gesagt hast), dann schreib eine PN, dann öffnen wir das Thema wieder.

PS: weil ichs nicht so stehen lassen will.
Du hast nach Client SSE gefragt, hast in dem JavaScript aber eine Server Side (WebAPI) SEE-Endpunkt-Variante erhalten. Die moderne bzw. die im Framework eingebaute Variante hierzu ist eben das von mir genannte SignalR.
Client SSE (über Event Source) aus Deinem Code mit C# ist so in der Form nicht 1:1 heute möglich (weils Blazor noch nicht kann, rudimentär eben SignalR); wenn dann eben selbst bauen, aber von Haus aus gibts nichts fertiges.

Hinweis von Abt vor 2 Jahren

Nach Klärung handelt es sich wie hier genannt um ein Cross Post, daher bleibt das Thema zu.

Thema geschlossen