{"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\/hr\/primjer-implementacije-tekstualnog-razgovora-u-stvarnom-vremenu-s-bibliotekom-signalr\/","title":{"rendered":"Primjer implementacije tekstualnog razgovora u stvarnom vremenu s bibliotekom SignalR"},"content":{"rendered":"<p><em>Autor: Denis Balant, Enej Hudobreznik<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>HTTP (Hypertext Transfer Protocol) protokol jo\u0161 uvijek se primarno koristi za prijenos podataka preko Interneta. njegov moderniji i sigurniji \u0161ifrirani derivat HTTPS (HTTP Secure). Temelje se na arhitekturi klijent-poslu\u017eitelj, gdje klijent (engleski client) \u0161alje zahtjev (engleski HTTP request) poslu\u017eitelju (engleski Server), a poslu\u017eitelj na njega odgovara odgovorom (engleski HTTP response).<\/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 zahtjevi i odgovori (izvor: https:\/\/www.telerik.com\/blogs\/real-time-communication-techniques)\" class=\"wp-image-2538892\"\/><figcaption><sub>HTTP zahtjevi i odgovori (izvor: <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>HTTP i HTTPS su prikladni za jednostavne prijenose zahtjeva i odgovora (npr. preuzimanje HTML datoteke na zahtjev klijenta). Kori\u0161tenjem ova dva protokola, korisnik mo\u017ee dobiti a\u017eurirane podatke samo kada se podnese novi zahtjev, stoga nisu najprikladniji za prijenos podataka u stvarnom vremenu (npr. online chat, online videoigre, pra\u0107enje lokacije itd.), na kojima se temelji velik dio funkcionalnosti modernih web aplikacija. Postoje mnogi razli\u010diti i bolji na\u010dini implementacije agilnosti, svaki sa svojim prednostima i nedostacima. <\/p>\n\n\n\n<p>Najjednostavniji na\u010din implementacije je redovno prozivanje, gdje klijent u svakom intervalu prozivanja poslu\u017eitelju vi\u0161e puta \u0161alje zahtjeve za novim podacima, bez obzira je li se sadr\u017eaj uop\u0107e promijenio. Unato\u010d jednostavnosti, ovaj pristup nije prikladan za ve\u0107e servise gdje je za pristup serveru potreban veliki broj klijenata, jer ga velika koli\u010dina nepotrebnih i ponavljanih zahtjeva mo\u017ee preopteretiti i time usporiti rad servisa. &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>Trenutno ispitivanje (izvor: <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>Pobolj\u0161anje je postignuto uvo\u0111enjem dugotrajnog anketiranja, gdje klijent na isti na\u010din \u0161alje zahtjeve poslu\u017eitelju, ali poslu\u017eitelj na njih ne odgovara dok ne detektira prisutnost novih podataka. Nedostatak ovakvog pristupa je \u0161to klijent mora imati definiran odre\u0111eni vremenski interval nakon kojeg neaktivnost poslu\u017eitelja prepoznaje kao gre\u0161ku. To dodaje dodatnu razinu slo\u017eenosti postavljanju klijenta i poslu\u017eitelja.<\/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>Dugotrajno ispitivanje (izvor: <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>Moderni HTML5 standard tako\u0111er nudi API koji se zove Server-Sent Events. To je protokol u kojem klijent ne mora povremeno slati zahtjeve poslu\u017eitelju, ve\u0107 poslu\u017eitelj ponovno \u0161alje potrebne podatke kada se naprave promjene, \u010dime se olak\u0161ava komunikacija u stvarnom vremenu.<\/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>Doga\u0111aji poslani od strane poslu\u017eitelja (izvor: <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>Standard HTML5 nudi i protokol WebSockets, koji omogu\u0107uje pravu dvosmjernu komunikaciju u stvarnom vremenu. Na po\u010detku uspostave provodi se rukovanje, gdje se klijent i poslu\u017eitelj dogovaraju oko standarda koje \u0107e koristiti. Nakon uspje\u0161nog rukovanja, izme\u0111u dva sudionika se otvara trajna veza s malom odgodom. Ovaj protokol je posebno koristan kada se radi o vezi od to\u010dke do to\u010dke (izravna veza izme\u0111u klijenta i poslu\u017eitelja).<\/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>Osim klasi\u010dne klijent-poslu\u017eiteljske arhitekture, postoje i druga rje\u0161enja gdje veza izme\u0111u klijenata ne te\u010de preko poslu\u017eitelja, ve\u0107 izravno izme\u0111u klijenata koji igraju ulogu i klijenta i poslu\u017eitelja (ove peer-to-peer mre\u017ee). Popularan protokol za komunikaciju u stvarnom vremenu u takvim mre\u017eama je WebRTC.<\/p>\n\n\n\n<p>U .NET okru\u017eenju za komunikaciju u stvarnom vremenu mo\u017eemo koristiti biblioteku otvorenog koda SignalR, koja je dio web okvira ASP.NET Core, pa ju je lako dodati postoje\u0107im projektima kao dodatnu razinu me\u0111uprograma kada obrada dolaznih zahtjeva. Knji\u017enica simulira pozive metoda na klijentu sa strane poslu\u017eitelja i pozive metoda na poslu\u017eitelju sa strane klijenta (Remote Procedure Call - RPC), ali ne jam\u010di prikladnost br. parametri i njihove vrste. S poslu\u017eitelja mo\u017eemo pozivati metode na svim klijentima, na odre\u0111enoj grupi klijenata ili samo na jednom klijentu.<\/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>Dijagram kako funkcionira SignalR biblioteka (<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>Njegova glavna prednost je jednostavnost implementacije zahvaljuju\u0107i paketima za razvoj softvera (SDK) za mnoge razli\u010dite platforme, koji skrivaju unutarnje funkcioniranje usluge od programera, te mogu\u0107nost jednostavnog hostinga uz uslugu Azure SignalR. Dodatna prednost je \u0161to usluga sama odabire najprikladniju vrstu veze (gore opisanu) izme\u0111u klijenta i poslu\u017eitelja.<\/p>\n\n\n\n<p>Kori\u0161tenje biblioteke temelji se na posebnim klasama zvanim hubovi, koje predstavljaju apstrakciju veze izme\u0111u klijenata i poslu\u017eitelja. Za njih definiramo metode koje klijenti mogu pozivati na poslu\u017eitelju.<\/p>\n\n\n\n<p>Primjer u nastavku prikazuje primjer jednostavne implementacije tekstualnog razgovora. Prvo, definiramo osnovni \u010dvor za razgovor na poslu\u017eitelju. Metode ove klase predstavljaju metode koje mogu pozivati klijenti na poslu\u017eitelju. Kada se pozove metoda SendMessage, klijent \u0161alje ID korisnika (userId) i sadr\u017eaj poruke (message), dok poslu\u017eitelj poziva metodu ReceiveMessage na svim klijentima sa zadanim parametrima.<\/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>Implementacija tekstualnog razgovora na poslu\u017eitelju u .NET okru\u017eenju (vlastiti izvor)<\/sub><\/figcaption><\/figure>\n\n\n\n<p>Primjer u nastavku prikazuje implementaciju JavaScript web klijenta pomo\u0107u slu\u017ebene biblioteke (@microsoft\/signalr). Klijenti se povezuju na URL \u010dvora (\/chat u donjem primjeru). Veza je predstavljena objektom veze. Metoda on predstavlja slu\u0161atelja poziva metode, \u010diji je naziv zadan kao prvi parametar, a kao drugi funkcija koja se izvr\u0161ava na doga\u0111aj. Implementiramo metode na poslu\u017eitelju kroz invoke metodu objekta veze, koja zahtijeva ime metode kao prvi argument, nakon \u010dega slijede njezini parametri.<\/p>\n\n\n\n<p>Prema zadanim postavkama, podaci se prenose izme\u0111u poslu\u017eitelja i klijenata u JSON formatu, ali biblioteka podr\u017eava i u\u010dinkovitiji format MessagePack.<\/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>Implementacija web klijenta u JavaScript jeziku (vlastiti izvor)<\/sub><\/figcaption><\/figure>\n\n\n\n<p>Iako knji\u017enica uvelike olak\u0161ava razvoj, ona ima svoje nedostatke. Jedan od glavnih je skalabilnost sustava za samostalno hosting i osiguravanje neprekidnog rada, budu\u0107i da je njegovu implementaciju vrlo te\u0161ko distribuirati na nekoliko zasebnih poslu\u017eitelja. To se pokazalo posebno te\u0161kim ako \u017eelimo smanjiti ka\u0161njenje za udaljene korisnike i hostirati na nekoliko razli\u010ditih lokacija, jer je dizajn rje\u0161enja ograni\u010den na samo jednu. Tako\u0111er, knji\u017enica ne osigurava pouzdanu dostavu i naru\u010divanje poruka, \u0161to mo\u017ee degradirati korisni\u010dko iskustvo.<\/p>","protected":false},"excerpt":{"rendered":"<p>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;]<\/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\/hr\/wp-json\/wp\/v2\/posts\/5310\" \/>\n<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\/hr\/primjer-implementacije-tekstualnog-razgovora-u-stvarnom-vremenu-s-bibliotekom-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=\"Napisao\/la\" \/>\n\t<meta name=\"twitter:data1\" content=\"sinusiks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Procijenjeno vrijeme \u010ditanja\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minuta\" \/>\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\":\"hr\",\"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\":\"hr\"},{\"@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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/5310","og_locale":"hr_HR","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\/hr\/primjer-implementacije-tekstualnog-razgovora-u-stvarnom-vremenu-s-bibliotekom-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":{"Napisao\/la":"sinusiks","Procijenjeno vrijeme \u010ditanja":"5 minuta"},"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":"hr","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":"hr"},{"@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\/hr\/author\/sinusiks\/"}]}},"_links":{"self":[{"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/posts\/5310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/comments?post=5310"}],"version-history":[{"count":0,"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/posts\/5310\/revisions"}],"wp:attachment":[{"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/media?parent=5310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/categories?post=5310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/hr\/wp-json\/wp\/v2\/tags?post=5310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}