{"id":5310,"date":"2024-08-20T08:35:00","date_gmt":"2024-08-20T06:35:00","guid":{"rendered":"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/"},"modified":"2024-08-20T08:35:00","modified_gmt":"2024-08-20T06:35:00","slug":"primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr","status":"publish","type":"post","link":"https:\/\/viva.racunalniske-novice.com\/de\/beispiel-fur-die-implementierung-einer-echtzeit-textkonversation-mit-der-signalr-bibliothek\/","title":{"rendered":"Ein Beispiel f\u00fcr die Implementierung einer Echtzeit-Textkonversation mit der SignalR-Bibliothek"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><em>Autor: Denis Balant, Enej Hudobreznik<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr die Daten\u00fcbertragung im Internet wird nach wie vor \u00fcberwiegend das HTTP-Protokoll (Hypertext Transfer Protocol) verwendet. sein moderneres und sichereres verschl\u00fcsseltes Derivat HTTPS (HTTP Secure). Sie basieren auf einer Client-Server-Architektur, bei der der Client (englischer Client) eine Anfrage (englischer HTTP-Request) an den Server (englischer Server) sendet und der Server darauf mit einer Antwort (englischer HTTP-Response) antwortet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image.png\" alt=\"HTTP-Anfragen und -Antworten (Quelle: https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques)\" class=\"wp-image-2538892\"\/><figcaption><sub>HTTP-Anfragen und -Antworten (Quelle: <a href=\"https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques\">https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques<\/a>)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP und HTTPS eignen sich f\u00fcr einfache Request-Response-\u00dcbertragungen (z. B. das Herunterladen einer HTML-Datei auf Anfrage eines Clients). Bei Verwendung dieser beiden Protokolle kann der Benutzer aktualisierte Daten nur bei einer neuen Anfrage abrufen. Daher eignen sie sich nicht optimal f\u00fcr Echtzeit-Daten\u00fcbertragungen (z. B. Online-Chat, Online-Videospiele, Standortverfolgung usw.), auf denen ein Gro\u00dfteil der Funktionalit\u00e4t moderner Webanwendungen basiert. Es gibt viele verschiedene und bessere M\u00f6glichkeiten, Agilit\u00e4t zu implementieren, jede mit ihren eigenen Vor- und Nachteilen. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die einfachste Implementierungsmethode ist das regelm\u00e4\u00dfige Polling, bei dem der Client in jedem Polling-Intervall wiederholt Anfragen nach neuen Daten an den Server sendet, unabh\u00e4ngig davon, ob sich der Inhalt \u00fcberhaupt ge\u00e4ndert hat. Trotz seiner Einfachheit eignet sich dieser Ansatz nicht f\u00fcr gr\u00f6\u00dfere Dienste, bei denen der Zugriff auf den Server viele Clients erfordert, da eine gro\u00dfe Menge unn\u00f6tiger und wiederholter Anfragen ihn \u00fcberlasten und somit die Leistung des Dienstes verlangsamen kann. &nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-2.png\" alt=\"\" class=\"wp-image-2538894\"\/><figcaption><sub>Aktuelle Vernehmung (Quelle: <a href=\"https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques\">https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques<\/a>)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Verbesserung wird durch die Einf\u00fchrung einer Langzeitabfrage erreicht, bei der der Client auf die gleiche Weise Anfragen an den Server sendet, der Server jedoch erst dann darauf antwortet, wenn er das Vorhandensein neuer Daten erkennt. Der Nachteil eines solchen Ansatzes besteht darin, dass dem Client ein bestimmtes Zeitintervall definiert werden muss, nach dem er die Inaktivit\u00e4t des Servers als Fehler erkennt. Dies erh\u00f6ht die Komplexit\u00e4t des Client- und Server-Setups zus\u00e4tzlich.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-3.png\" alt=\"\" class=\"wp-image-2538896\"\/><figcaption><sub>L\u00e4ngeres Verh\u00f6r (Quelle: <a href=\"https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques\">https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques<\/a>)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der moderne HTML5-Standard bietet auch eine API namens Server-Sent Events. Es handelt sich um ein Protokoll, bei dem der Client nicht regelm\u00e4\u00dfig Anfragen an den Server senden muss, sondern der Server die erforderlichen Daten erneut sendet, wenn \u00c4nderungen vorgenommen werden, wodurch die Kommunikation in Echtzeit erleichtert wird.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-4.png\" alt=\"\" class=\"wp-image-2538898\"\/><figcaption><sub>Vom Server gesendete Ereignisse (Quelle: <a href=\"https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques\">https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques<\/a>)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der HTML5-Standard bietet au\u00dferdem das WebSockets-Protokoll, das eine echte bidirektionale Echtzeitkommunikation erm\u00f6glicht. Zu Beginn der Einrichtung wird ein Handshake durchgef\u00fchrt, bei dem sich Client und Server auf die von ihnen verwendeten Standards einigen. Nach einem erfolgreichen Handshake wird mit einer kleinen Verz\u00f6gerung eine dauerhafte Verbindung zwischen den beiden Teilnehmern ge\u00f6ffnet. Dieses Protokoll ist besonders n\u00fctzlich, wenn es um eine Punkt-zu-Punkt-Verbindung (eine direkte Verbindung zwischen einem Client und einem Server) geht.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-5-e1724134052479.png\" alt=\"\" class=\"wp-image-2538902\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Neben der klassischen Client-Server-Architektur gibt es auch andere L\u00f6sungen, bei denen die Verbindung zwischen Clients nicht \u00fcber Server erfolgt, sondern direkt zwischen Clients, die sowohl die Rolle des Clients als auch des Servers \u00fcbernehmen (diese Peer-to-Peer-Netzwerke). Ein beliebtes Protokoll f\u00fcr die Echtzeitkommunikation in solchen Netzwerken ist WebRTC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der .NET-Umgebung k\u00f6nnen wir f\u00fcr die Echtzeitkommunikation die Open-Source-Bibliothek SignalR verwenden, die Teil des ASP.NET Core-Webframeworks ist, sodass wir sie problemlos als zus\u00e4tzliche Middleware-Ebene zu bestehenden Projekten hinzuf\u00fcgen k\u00f6nnen Bearbeitung eingehender Anfragen. Die Bibliothek simuliert Methodenaufrufe auf dem Client von der Serverseite und Methodenaufrufe auf dem Server von der Clientseite (Remote Procedure Call \u2013 RPC), \u00fcbernimmt jedoch keine Gew\u00e4hr f\u00fcr die Angemessenheit der Nr. Parameter und ihre Typen. Vom Server aus k\u00f6nnen wir Methoden auf allen Clients, auf einer bestimmten Gruppe von Clients oder nur auf einem Client aufrufen.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-6.png\" alt=\"\" class=\"wp-image-2538908\"\/><figcaption><sub>Diagramm zur Funktionsweise der SignalR-Bibliothek (<a href=\"https:\/\/learn.microsoft.com\/en-us\/aspnet\/signalr\/overview\/getting-started\/introduction-to-signalr\">https:\/\/learn.microsoft.com\/en-us\/aspnet\/signalr\/overview\/getting-started\/introduction-to-signalr<\/a>)<\/sub><\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Sein Hauptvorteil ist die einfache Implementierung dank der Softwareentwicklungspakete (SDK) f\u00fcr viele verschiedene Plattformen, die das Innenleben des Dienstes vor den Programmierern verbergen, und die M\u00f6glichkeit eines einfachen Hostings mit dem Azure SignalR-Dienst. Ein zus\u00e4tzlicher Vorteil besteht darin, dass der Dienst selbst den am besten geeigneten Verbindungstyp (oben beschrieben) zwischen dem Client und dem Server ausw\u00e4hlt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Nutzung der Bibliothek basiert auf speziellen Klassen namens Hubs, die eine Abstraktion der Verbindung zwischen Clients und Server darstellen. F\u00fcr sie definieren wir Methoden, die Clients auf dem Server aufrufen k\u00f6nnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das folgende Beispiel zeigt ein Beispiel f\u00fcr eine einfache Textkonversationsimplementierung. Zuerst definieren wir den Basisknoten f\u00fcr die Konversation auf dem Server. Die Methoden dieser Klasse stellen Methoden dar, die von Clients auf dem Server aufgerufen werden k\u00f6nnen. Beim Aufruf der SendMessage-Methode sendet der Client die Benutzer-ID (userId) und den Inhalt der Nachricht (message), w\u00e4hrend der Server die ReceiveMessage-Methode auf allen Clients mit den angegebenen Parametern aufruft.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-7.png\" alt=\"\" class=\"wp-image-2538942\"\/><figcaption><sub>Implementierung der Textkonversation auf dem Server in der .NET-Umgebung (eigene Quelle)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Das folgende Beispiel zeigt eine JavaScript-Webclient-Implementierung unter Verwendung der offiziellen Bibliothek (@microsoft\/signalr). Clients stellen eine Verbindung zur Knoten-URL her (\/chat im Beispiel unten). Eine Verbindung wird durch das Verbindungsobjekt dargestellt. Die on-Methode stellt einen Listener f\u00fcr den Methodenaufruf dar, dessen Name als erster Parameter und als zweiter die Funktion angegeben wird, die auf dem Ereignis ausgef\u00fchrt wird. Wir implementieren Methoden auf dem Server \u00fcber die Aufrufmethode des Verbindungsobjekts, die als erstes Argument den Namen der Methode gefolgt von ihren Parametern erfordert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Standardm\u00e4\u00dfig werden Daten zwischen Server und Clients im JSON-Format \u00fcbertragen, die Bibliothek unterst\u00fctzt jedoch auch das effizientere MessagePack-Format.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-8.png\" alt=\"\" class=\"wp-image-2538944\"\/><figcaption><sub>Implementierung des Webclients in der JavaScript-Sprache (eigene Quelle)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Obwohl die Bibliothek die Entwicklung erheblich erleichtert, hat sie auch Nachteile. Einer der Hauptgr\u00fcnde ist die Skalierbarkeit des Systems f\u00fcr Selbsthosting und die Gew\u00e4hrleistung eines unterbrechungsfreien Betriebs, da seine Implementierung nur sehr schwer auf mehrere separate Server verteilt werden kann. Dies erweist sich als besonders schwierig, wenn wir die Latenz f\u00fcr Remote-Benutzer reduzieren und mehrere verschiedene Standorte hosten m\u00f6chten, da das L\u00f6sungsdesign auf nur einen beschr\u00e4nkt ist. Au\u00dferdem gew\u00e4hrleistet die Bibliothek keine zuverl\u00e4ssige Zustellung und Bestellung von Nachrichten, was das Benutzererlebnis beeintr\u00e4chtigen kann.<\/p>","protected":false},"excerpt":{"rendered":"<p>Autoren: Denis Balant, Enej Hudobreznik. Das HTTP-Protokoll (Hypertext Transfer Protocol) oder seine modernere und sicherere verschl\u00fcsselte Variante HTTPS (HTTP Secure) wird nach wie vor haupts\u00e4chlich f\u00fcr die Daten\u00fcbertragung \u00fcber das Internet verwendet. Sie basieren auf der Client-Server-Architektur, bei der der Client eine Anfrage (HTTP-Anfrage) an den Server sendet und der Server mit einer Antwort darauf reagiert. [\u2026]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[66],"tags":[],"class_list":["post-5310","post","type-post","status-publish","format-standard","hentry","category-programi"],"acf":{"subtitle":"Kljub nenehnemu razvoju spletnih strani so tehnologije v ozadju skozi \u010das ostale zelo podobne. Ker splet ni dom le sodobnim stranem, ampak tudi starej\u0161im, ki morajo delovati tudi v sodobnih brskalnikih, so dana\u0161nje tehnologije pogosto le izbolj\u0161ane in dopolnjene razli\u010dic tistih, ki so nastale \u017ee ob samem za\u010detku svetovnega spleta. Naprednej\u0161e sodobne funkcije, ki jih te re\u0161itve ne podpirajo, pa omogo\u010dajo novi standardi.","heading":"","summary":"Kljub nenehnemu razvoju spletnih strani so tehnologije v ozadju skozi \u010das ostale zelo podobne. ","thumbnail_small":"https:\/\/racunalniske-novice.com\/wp-content\/uploads\/2024\/08\/coding-560x315.jpg","thumbnail_large":"https:\/\/racunalniske-novice.com\/wp-content\/uploads\/2024\/08\/coding-1024x682.jpg","thumbnail_caption":"Fotografija je ilustrativna. (Foto: Pixabay)","gallery":"","video_gallery":null,"author":"","links":null,"sources":null,"skip_language":[]},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR - Ra\u010dunalni\u0161ke novice<\/title>\n<meta name=\"description\" content=\"Kljub nenehnemu razvoju spletnih strani so tehnologije v ozadju skozi \u010das ostale zelo podobne.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/posts\/5310\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR - Ra\u010dunalni\u0161ke novice\" \/>\n<meta property=\"og:description\" content=\"Avtorja: Denis Balant, Enej Hudobreznik Za prenos podatkov preko spletu se \u0161e danes primarno uporablja protokol HTTP (angl. Hypertext Transfer Protocol) oz. njegova sodobnej\u0161a in varnej\u0161a \u0161ifrirana izpeljanka HTTPS (angl. HTTP Secure). Osnovana sta na arhitekturi odjemalec-stre\u017enik, kjer odjemalec (angl. client) po\u0161lje stre\u017eniku (angl. Server) zahtevo (angl. HTTP request), stre\u017enik pa nanj odgovori z odzivom [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/viva.racunalniske-novice.com\/de\/beispiel-fur-die-implementierung-einer-echtzeit-textkonversation-mit-der-signalr-bibliothek\/\" \/>\n<meta property=\"og:site_name\" content=\"Ra\u010dunalni\u0161ke novice\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-20T06:35:00+00:00\" \/>\n<meta name=\"author\" content=\"sinusiks\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"sinusiks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/\",\"url\":\"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/\",\"name\":\"Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR - Ra\u010dunalni\u0161ke novice\",\"isPartOf\":{\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#website\"},\"datePublished\":\"2024-08-20T06:35:00+00:00\",\"dateModified\":\"2024-08-20T06:35:00+00:00\",\"author\":{\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4\"},\"breadcrumb\":{\"@id\":\"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/viva.racunalniske-novice.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#website\",\"url\":\"https:\/\/viva.racunalniske-novice.com\/en\/\",\"name\":\"Ra\u010dunalni\u0161ke novice\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/viva.racunalniske-novice.com\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4\",\"name\":\"sinusiks\",\"sameAs\":[\"https:\/\/ml.racunalniske-novice.com\"],\"url\":\"https:\/\/viva.racunalniske-novice.com\/de\/author\/sinusiks\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR - Ra\u010dunalni\u0161ke novice","description":"Kljub nenehnemu razvoju spletnih strani so tehnologije v ozadju skozi \u010das ostale zelo podobne.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/posts\/5310","og_locale":"de_DE","og_type":"article","og_title":"Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR - Ra\u010dunalni\u0161ke novice","og_description":"Avtorja: Denis Balant, Enej Hudobreznik Za prenos podatkov preko spletu se \u0161e danes primarno uporablja protokol HTTP (angl. Hypertext Transfer Protocol) oz. njegova sodobnej\u0161a in varnej\u0161a \u0161ifrirana izpeljanka HTTPS (angl. HTTP Secure). Osnovana sta na arhitekturi odjemalec-stre\u017enik, kjer odjemalec (angl. client) po\u0161lje stre\u017eniku (angl. Server) zahtevo (angl. HTTP request), stre\u017enik pa nanj odgovori z odzivom [&hellip;]","og_url":"https:\/\/viva.racunalniske-novice.com\/de\/beispiel-fur-die-implementierung-einer-echtzeit-textkonversation-mit-der-signalr-bibliothek\/","og_site_name":"Ra\u010dunalni\u0161ke novice","article_published_time":"2024-08-20T06:35:00+00:00","author":"sinusiks","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"sinusiks","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/","url":"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/","name":"Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR - Ra\u010dunalni\u0161ke novice","isPartOf":{"@id":"https:\/\/viva.racunalniske-novice.com\/en\/#website"},"datePublished":"2024-08-20T06:35:00+00:00","dateModified":"2024-08-20T06:35:00+00:00","author":{"@id":"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4"},"breadcrumb":{"@id":"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/viva.racunalniske-novice.com\/primer-implementacije-sprotnega-tekstovnega-pogovora-s-knjiznico-signalr\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/viva.racunalniske-novice.com\/en\/"},{"@type":"ListItem","position":2,"name":"Primer implementacije sprotnega tekstovnega pogovora s knji\u017enico SignalR"}]},{"@type":"WebSite","@id":"https:\/\/viva.racunalniske-novice.com\/en\/#website","url":"https:\/\/viva.racunalniske-novice.com\/en\/","name":"Ra\u010dunalni\u0161ke novice","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/viva.racunalniske-novice.com\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4","name":"sinusiks","sameAs":["https:\/\/ml.racunalniske-novice.com"],"url":"https:\/\/viva.racunalniske-novice.com\/de\/author\/sinusiks\/"}]}},"_links":{"self":[{"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/posts\/5310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/comments?post=5310"}],"version-history":[{"count":0,"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/posts\/5310\/revisions"}],"wp:attachment":[{"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/media?parent=5310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/categories?post=5310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/de\/wp-json\/wp\/v2\/tags?post=5310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}