{"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\/fr\/exemple-de-mise-en-oeuvre-de-conversation-textuelle-en-temps-reel-avec-la-bibliotheque-signalr\/","title":{"rendered":"Un exemple d&#039;impl\u00e9mentation d&#039;une conversation textuelle en temps r\u00e9el avec la biblioth\u00e8que SignalR"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><em>Auteurs : Denis Balant, Enej Hudobreznik<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Le protocole HTTP (Hypertext Transfer Protocol) est encore principalement utilis\u00e9 pour le transfert de donn\u00e9es sur Internet. son d\u00e9riv\u00e9 crypt\u00e9 HTTPS (HTTP Secure) plus moderne et plus s\u00fbr. Ils sont bas\u00e9s sur une architecture client-serveur, o\u00f9 le client (client anglais) envoie une requ\u00eate (requ\u00eate HTTP anglaise) au serveur (serveur anglais), et le serveur y r\u00e9pond par une r\u00e9ponse (r\u00e9ponse HTTP anglaise).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image.png\" alt=\"Requ\u00eates et r\u00e9ponses HTTP (source\u00a0: https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques)\" class=\"wp-image-2538892\"\/><figcaption><sub>Requ\u00eates et r\u00e9ponses HTTP (source\u00a0: <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\">Les protocoles HTTP et HTTPS conviennent aux transferts simples de type requ\u00eate-r\u00e9ponse (par exemple, le t\u00e9l\u00e9chargement d&#039;un fichier HTML \u00e0 la demande d&#039;un client). Avec ces deux protocoles, l&#039;utilisateur n&#039;obtient des donn\u00e9es mises \u00e0 jour que lors d&#039;une nouvelle requ\u00eate\u00a0; ils ne sont donc pas optimaux pour les transferts de donn\u00e9es en temps r\u00e9el (par exemple, les messageries instantan\u00e9es, les jeux vid\u00e9o en ligne, la g\u00e9olocalisation, etc.), qui constituent pourtant la base de nombreuses fonctionnalit\u00e9s des applications web modernes. Il existe de nombreuses autres mani\u00e8res, plus performantes, de mettre en \u0153uvre l&#039;agilit\u00e9, chacune pr\u00e9sentant ses propres avantages et inconv\u00e9nients. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La m\u00e9thode de mise en \u0153uvre la plus simple est l&#039;interrogation r\u00e9guli\u00e8re, dans laquelle le client envoie de mani\u00e8re r\u00e9p\u00e9t\u00e9e des demandes de nouvelles donn\u00e9es au serveur \u00e0 chaque intervalle d&#039;interrogation, que le contenu ait ou non chang\u00e9. Malgr\u00e9 sa simplicit\u00e9, cette approche n&#039;est pas adapt\u00e9e aux services plus volumineux o\u00f9 l&#039;acc\u00e8s au serveur n\u00e9cessite de nombreux clients, car un grand nombre de requ\u00eates inutiles et r\u00e9p\u00e9t\u00e9es peuvent le surcharger et ainsi ralentir les performances du service. &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>Interrogatoire en cours (source\u00a0: <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\">L&#039;am\u00e9lioration est obtenue en introduisant une interrogation \u00e0 long terme, o\u00f9 le client envoie des requ\u00eates au serveur de la m\u00eame mani\u00e8re, mais le serveur n&#039;y r\u00e9pond pas tant qu&#039;il n&#039;a pas d\u00e9tect\u00e9 la pr\u00e9sence de nouvelles donn\u00e9es. L&#039;inconv\u00e9nient d&#039;une telle approche est que le client doit d\u00e9finir un certain intervalle de temps, apr\u00e8s quoi il reconna\u00eet l&#039;inactivit\u00e9 du serveur comme une erreur. Cela ajoute une couche suppl\u00e9mentaire de complexit\u00e9 \u00e0 la configuration du client et du serveur.<\/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>Interrogatoire prolong\u00e9 (source\u00a0: <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\">La norme HTML5 moderne fournit \u00e9galement une API appel\u00e9e Server-Sent Events. Il s&#039;agit d&#039;un protocole dans lequel le client n&#039;a pas besoin d&#039;envoyer p\u00e9riodiquement des requ\u00eates au serveur, mais le serveur renvoie les donn\u00e9es n\u00e9cessaires lorsque des modifications sont apport\u00e9es, facilitant ainsi la communication en temps r\u00e9el.<\/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>\u00c9v\u00e9nements envoy\u00e9s par le serveur (source\u00a0: <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\">La norme HTML5 propose \u00e9galement le protocole WebSockets, qui permet une v\u00e9ritable communication bidirectionnelle en temps r\u00e9el. Au d\u00e9but de l&#039;\u00e9tablissement, une poign\u00e9e de main est effectu\u00e9e, au cours de laquelle le client et le serveur se mettent d&#039;accord sur l&#039;ensemble des normes qu&#039;ils utiliseront. Apr\u00e8s une poign\u00e9e de main r\u00e9ussie, une connexion permanente avec un l\u00e9ger d\u00e9lai est \u00e9tablie entre les deux participants. Ce protocole est particuli\u00e8rement utile lorsqu&#039;il s&#039;agit d&#039;une connexion point \u00e0 point (une connexion directe entre un client et un serveur).<\/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\">En plus de l&#039;architecture client-serveur classique, il existe d&#039;autres solutions o\u00f9 la connexion entre clients ne passe pas par des serveurs, mais directement entre clients qui jouent \u00e0 la fois le r\u00f4le de client et de serveur (ces r\u00e9seaux peer-to-peer). Un protocole populaire pour la communication en temps r\u00e9el dans de tels r\u00e9seaux est WebRTC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans l&#039;environnement .NET pour la communication en temps r\u00e9el, nous pouvons utiliser la biblioth\u00e8que open source SignalR, qui fait partie du framework Web ASP.NET Core, il est donc facile de l&#039;ajouter aux projets existants en tant que niveau suppl\u00e9mentaire de middleware lorsque traiter les demandes entrantes. La biblioth\u00e8que simule les appels de m\u00e9thode sur le client c\u00f4t\u00e9 serveur et les appels de m\u00e9thode sur le serveur c\u00f4t\u00e9 client (Remote Procedure Call - RPC), mais ne garantit pas la pertinence du no. param\u00e8tres et leurs types. Depuis le serveur, nous pouvons appeler des m\u00e9thodes sur tous les clients, sur un groupe sp\u00e9cifique de clients ou sur un seul client.<\/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>Sch\u00e9ma de fonctionnement de la biblioth\u00e8que SignalR (<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\">Son principal avantage est la simplicit\u00e9 de mise en \u0153uvre gr\u00e2ce aux packages de d\u00e9veloppement logiciel (SDK) pour de nombreuses plateformes diff\u00e9rentes, qui cachent le fonctionnement interne du service aux programmeurs, et la possibilit\u00e9 d&#039;un h\u00e9bergement facile avec le service Azure SignalR. Un avantage suppl\u00e9mentaire est que le service choisit lui-m\u00eame le type de connexion le plus appropri\u00e9 (d\u00e9crit ci-dessus) entre le client et le serveur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#039;utilisation de la biblioth\u00e8que est bas\u00e9e sur des classes sp\u00e9ciales appel\u00e9es hubs, qui repr\u00e9sentent une abstraction de la connexion entre les clients et le serveur. Pour eux, nous d\u00e9finissons des m\u00e9thodes que les clients peuvent appeler sur le serveur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#039;exemple ci-dessous montre un exemple d&#039;impl\u00e9mentation d&#039;une conversation textuelle simple. Tout d&#039;abord, nous d\u00e9finissons le n\u0153ud de base de la conversation sur le serveur. Les m\u00e9thodes de cette classe repr\u00e9sentent des m\u00e9thodes pouvant \u00eatre appel\u00e9es par les clients sur le serveur. Lorsque la m\u00e9thode SendMessage est appel\u00e9e, le client envoie l&#039;ID utilisateur (userId) et le contenu du message (message), tandis que le serveur appelle la m\u00e9thode ReceiverMessage sur tous les clients avec les param\u00e8tres sp\u00e9cifi\u00e9s.<\/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>Impl\u00e9mentation de conversation textuelle sur le serveur dans l&#039;environnement .NET (source propre)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">L&#039;exemple ci-dessous montre une impl\u00e9mentation de client Web JavaScript utilisant la biblioth\u00e8que officielle (@microsoft\/signalr). Les clients se connectent \u00e0 l&#039;URL du n\u0153ud (\/chat dans l&#039;exemple ci-dessous). Une connexion est repr\u00e9sent\u00e9e par l&#039;objet de connexion. La m\u00e9thode on repr\u00e9sente un \u00e9couteur de l&#039;appel de m\u00e9thode dont le nom est donn\u00e9 en premier param\u00e8tre, et en second la fonction qui est ex\u00e9cut\u00e9e sur l&#039;\u00e9v\u00e9nement. Nous impl\u00e9mentons les m\u00e9thodes sur le serveur via la m\u00e9thode d&#039;invocation de l&#039;objet de connexion, qui n\u00e9cessite le nom de la m\u00e9thode comme premier argument, suivi de ses param\u00e8tres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par d\u00e9faut, les donn\u00e9es sont transf\u00e9r\u00e9es entre le serveur et les clients au format JSON, mais la biblioth\u00e8que prend \u00e9galement en charge le format MessagePack, plus efficace.<\/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>Impl\u00e9mentation du client web en langage JavaScript (source propre)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Bien que la biblioth\u00e8que facilite grandement le d\u00e9veloppement, elle pr\u00e9sente des inconv\u00e9nients. L&#039;un des principaux est l&#039;\u00e9volutivit\u00e9 du syst\u00e8me pour s&#039;auto-h\u00e9berger et assurer un fonctionnement ininterrompu, car sa mise en \u0153uvre est tr\u00e8s difficile \u00e0 r\u00e9partir sur plusieurs serveurs distincts. Cela s&#039;av\u00e8re particuli\u00e8rement difficile si nous voulons r\u00e9duire la latence pour les utilisateurs distants et les h\u00f4tes situ\u00e9s dans plusieurs emplacements diff\u00e9rents, car la conception de la solution est limit\u00e9e \u00e0 un seul. De plus, la biblioth\u00e8que ne garantit pas une livraison et un classement fiables des messages, ce qui peut d\u00e9grader l&#039;exp\u00e9rience utilisateur.<\/p>","protected":false},"excerpt":{"rendered":"<p>Auteurs\u00a0: Denis Balant, Enej Hudobreznik. Le protocole HTTP (Hypertext Transfer Protocol) ou sa version chiffr\u00e9e plus moderne et s\u00e9curis\u00e9e HTTPS (HTTP Secure) reste le principal protocole de transfert de donn\u00e9es sur Internet. Il repose sur une architecture client-serveur, o\u00f9 le client envoie une requ\u00eate (requ\u00eate HTTP) au serveur, et le serveur r\u00e9pond par une r\u00e9ponse [\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\/fr\/wp-json\/wp\/v2\/posts\/5310\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/exemple-de-mise-en-oeuvre-de-conversation-textuelle-en-temps-reel-avec-la-bibliotheque-signalr\/\" \/>\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=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"sinusiks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\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\":\"fr-FR\",\"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\":\"fr-FR\"},{\"@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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/5310","og_locale":"fr_FR","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\/fr\/exemple-de-mise-en-oeuvre-de-conversation-textuelle-en-temps-reel-avec-la-bibliotheque-signalr\/","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":{"\u00c9crit par":"sinusiks","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"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":"fr-FR","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":"fr-FR"},{"@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\/fr\/author\/sinusiks\/"}]}},"_links":{"self":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts\/5310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/comments?post=5310"}],"version-history":[{"count":0,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts\/5310\/revisions"}],"wp:attachment":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/media?parent=5310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/categories?post=5310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/tags?post=5310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}