{"id":1698,"date":"2013-12-21T22:02:30","date_gmt":"2013-12-22T01:02:30","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=1698"},"modified":"2013-12-21T22:03:55","modified_gmt":"2013-12-22T01:03:55","slug":"sobre-bobagens-dizem-por-ai-sobre-tempo-real","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=1698","title":{"rendered":"Que &#8220;tempo real&#8221; \u00e9 este de que falam tanto?"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-1699\" alt=\"daliclock\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock-300x216.jpg\" width=\"300\" height=\"216\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock-300x216.jpg 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock.jpg 500w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>O que \u00e9 tempo-real? O que o pessoal anda chamando de tempo-real \u00e9 realmente tempo-real? Node.js ou websocket realmente me propiciam uma web &#8220;real time&#8221;? Vou tentar responder a todas estas perguntas neste post com a vis\u00e3o de algu\u00e9m que trabalha em um sistema de tempo-real de verdade (eu).<\/p>\n<h3>Como a computa\u00e7\u00e3o define tempo-real<\/h3>\n<p>Quando falamos em tempo-real no contexto da computa\u00e7\u00e3o nos referimos a toda uma gama de aplica\u00e7\u00f5es que possu\u00ed como requisito fundamental restri\u00e7\u00f5es temporais. O que \u00e9 uma restri\u00e7\u00e3o temporal? Ela diz que seu software executa corretamente se e somente se duas condi\u00e7\u00f5es forem satisfeitas:<\/p>\n<ul>\n<li>O software \u00e9 l\u00f3gicamente correto.<\/li>\n<li>A execu\u00e7\u00e3o do sistema se d\u00e1 no momento esperado.<\/li>\n<\/ul>\n<p>Se j\u00e1 \u00e9 dif\u00edcil escrever software com uma l\u00f3gica v\u00e1lida, ainda mais \u00e9 garantir que execute no momento esperado. Talvez seus sistemas atuais j\u00e1 possuam caracter\u00edsticas de tempo-real e voc\u00ea nem tenha se dado conta. O exemplo mais claro \u00e9 a execu\u00e7\u00e3o de tarefas agendadas que precisam executar no momento em que voc\u00ea as programou.<\/p>\n<p>Dependendo do autor voc\u00ea encontrar\u00e1 duas categorias de sistemas de tempo real. <em>Hard<\/em>, quando o atraso na execu\u00e7\u00e3o compromete completamente o seu resultado\u00a0\u00a0e\u00a0<em>Soft<\/em> (mais comum pra todos n\u00f3s) quando o atraso \u00e9 mais aceit\u00e1vel e no m\u00e1ximo ocorrer\u00e1 uma degrada\u00e7\u00e3o na execu\u00e7\u00e3o do sistema.<\/p>\n<p>O agendamento de tarefas com o qual a maior parte dos usu\u00e1rios est\u00e1 acostumado (usando ferramentas como, por exemplo, <a href=\"http:\/\/en.wikipedia.org\/wiki\/Cron\">CRON<\/a>, <a href=\"http:\/\/quartz-scheduler.org\/\">Quartz <\/a>ou <a href=\"http:\/\/docs.oracle.com\/javase\/7\/docs\/api\/java\/util\/Timer.html\">Timer do Java<\/a>) \u00e9 do tipo\u00a0<em>Soft<\/em>. Se voc\u00ea agenda sua execu\u00e7\u00e3o para as 13:00:00, pode ser que s\u00f3 sejam iniciadas alguns segundos depois sem normalmente ferrar a sua vida.<\/p>\n<p>H\u00e1 sistemas nos quais voc\u00ea requer uma precis\u00e3o maior como por exemplo no processamento de sinais. H\u00e1 diversos protocolos que enviam dados em uma cad\u00eancia bem estrita, como por exemplo de 50 em 50 milisegundos. Nestes casos qualquer atraso \u00e9 fatal, pois voc\u00ea ir\u00e1 perder a transmiss\u00e3o de dados caso seu c\u00f3digo n\u00e3o esteja estritamente sincronizado com o rel\u00f3gio do sistema.<\/p>\n<h3>A dificuldade na implementa\u00e7\u00e3o de sistemas de tempo-real<\/h3>\n<p>N\u00e3o \u00e9 a toa que Hard Real Time se chama Hard Real Time. Se um processo do sistema operacional come\u00e7a a consumir seus recursos computacionais no momento errado, por exemplo, \u00e9 grande a probabilidade de que voc\u00ea perca seu deadline. Ali\u00e1s,\u00a0<em>deadline<\/em> \u00e9 O termo. Tudo em tempo-real gira em torno disto: o momento no qual a coisa\u00a0<em>deve ocorrer<\/em>.<\/p>\n<p>Tempo-real em Java \u00e9 dif\u00edcilimo gra\u00e7as ao garbage collector. Muitas vezes sua execu\u00e7\u00e3o atrasa a execu\u00e7\u00e3o do sistema. Na pratica \u00e9 quase imposs\u00edvel escrever um sistema hard real time em Java em grande parte por esta raz\u00e3o. Por isto h\u00e1 tanta preocupa\u00e7\u00e3o com a cria\u00e7\u00e3o de objetos: quanto menor o n\u00famero de objetos, menor a probabilidade do GC executar e, consequentemente, menos interrup\u00e7\u00e3o temporal. Outro grande desafio \u00e9 a compila\u00e7\u00e3o just-in-time: a JVM recompila seu c\u00f3digo diversas vezes enquanto este encontra-se em execu\u00e7\u00e3o. Tunar a sua JVM para evitar sua ocorr\u00eancia em um momento inoportuno \u00e9 outro grande desafio.\u00a0E adivinha qual \u00e9 a JSR de n\u00famero 1? <a href=\"https:\/\/jcp.org\/aboutJava\/communityprocess\/mrel\/jsr001\/index2.html\">Real-time<\/a>.<\/p>\n<p>(este <a href=\"http:\/\/www.ibm.com\/developerworks\/library\/j-rtj1\/\">artigo de 2007 da IBM<\/a> sobre os desafios de se escrever sistemas real-time em Java \u00e9 uma boa leitura (claro, depois eles v\u00e3o te tentar vender a JVM RT deles))<\/p>\n<p>\u00c9 devido a este tipo de problema que normalmente solu\u00e7\u00f5es de tempo-real envolvem al\u00e9m do software, hardware. H\u00e1 inclusive sistemas operacionais espec\u00edficos para este tipo de problema, como por exemplo o <a href=\"http:\/\/www.qnx.com\/\">QNX<\/a> da BlackBerry, usado a d\u00e9cadas neste nicho. O que estes sistemas operacionais nos d\u00e3o de t\u00e3o especial? Basicamente nos permitem controlar melhor a prioridade dos processos.<\/p>\n<h3>&#8220;Meu sistema \u00e9 real-time: vejam como \u00e9 r\u00e1pido!&#8221; &#8211; OUCH!<\/h3>\n<p>Esta \u00e9 a maior bobagem que voc\u00ea pode falar sobre tempo-real com base no que disse acima. Lembra que eu havia dito que tempo real envolve <i>deadline<\/i>? Ent\u00e3o: se o seu sistema demora 23 horas para computar o resultado, mas o entrega no tempo exato, temos um sistema real-time do tipo hard. Lembre-se:\u00a0<em>deadline<\/em>, n\u00e3o performance \u00e9 quem manda aqui.<\/p>\n<h3>&#8220;Ocorreu l\u00e1 no servidor, imediatamente foi pro cliente. Real-time!&#8221; OUCH!<\/h3>\n<p>Pode at\u00e9 ser tempo-real, mas n\u00e3o necess\u00e1riamente. Se algo \u00e9 enviado imediatamente ap\u00f3s ter sido executado no servidor, que garantia voc\u00ea tem de que foi executado no deadline esperado? Ali\u00e1s, <strong>qual deadline?<\/strong>\u00a0Nenhum: pode ter demorado, por exemplo. Ali\u00e1s, isto tem outro nome: chama-se sistema\u00a0<em>on-line<\/em>.<\/p>\n<p>Um sistema on-line (ou online, sei l\u00e1) \u00e9 aquele no qual o resultado do processamento est\u00e1 diretamente relacionado \u00e0 intera\u00e7\u00e3o do usu\u00e1rio. Voc\u00ea clica no bot\u00e3o submeter do seu browser e imediatamente tem uma resposta com base no seu input. Isto \u00e9 online. Online pode ser tempo-real, mas n\u00e3o necess\u00e1riamente.<\/p>\n<p>Ali\u00e1s, este \u00e9 o uso que eu vejo do termo real-time quando aplicado ao Node.js, como por exemplo <a href=\"https:\/\/www.codeschool.com\/courses\/real-time-web-with-nodejs\">aqui<\/a>. Sacou a diferen\u00e7a? Voc\u00ea pode at\u00e9 conseguir um sistema de tempo real com Node.js, mas da forma normal, no m\u00e1ximo ir\u00e1 conseguir algo do tipo\u00a0<em>Soft<\/em>. Que controle voc\u00ea tem sobre os outros processos do sistema operacional? Pergunte-se: que &#8220;tempo-real&#8221; \u00e9 este que o pessoal usa pra vender o Node.js? Como algu\u00e9m pode vender material por a\u00ed sobre &#8220;real-time web&#8221; se n\u00e3o fala sobre restri\u00e7\u00f5es temporais? Que restri\u00e7\u00f5es temporais s\u00e3o estas? Apenas pessoas incr\u00edvelmente brilhantes podem v\u00ea-las?<\/p>\n<p>Dica: de nada adianta voc\u00ea ter um protocolo de comunica\u00e7\u00e3o de baix\u00edssima lat\u00eancia se n\u00e3o conseguir cumprir seu <em>deadline<\/em>.<\/p>\n<h3>Web RTC: cad\u00ea o tempo-real?<\/h3>\n<p>Quer ver um exemplo muito interessante? Web RTC. \u00c9 uma especifica\u00e7\u00e3o da W3C que propicia comunica\u00e7\u00e3o em &#8220;tempo real&#8221; entre browsers. Me faz um favor? Primeiro da uma lida na\u00a0<a href=\"http:\/\/dev.w3.org\/2011\/webrtc\/editor\/webrtc.html\">especifica\u00e7\u00e3o oficial<\/a>. Leu? Sentiu falta de algo no texto? Te conto ent\u00e3o: n\u00e3o h\u00e1 qualquer sita\u00e7\u00e3o aos termos &#8220;deadline&#8221;, &#8220;time restriction&#8221; ou similar. Nominho ruin hein? Tenho um nome pra isto: marketing. Por que n\u00e3o se chama &#8220;Web OTC&#8221;?<\/p>\n<p>Reparem: h\u00e1 alguma restri\u00e7\u00e3o de tempo aqui? Sim. Qual \u00e9? Se voc\u00ea est\u00e1 se comunicando com outra pessoa e demora muito pra chegar a resposta. Mas aonde ela est\u00e1 definida? O que a diferencia de um sistema meramente interativo? &#8220;Ao vivo&#8221; pode ser considerado &#8220;tempo-real&#8221;? H\u00e1 um questionamento interessante aqui que deixo para voc\u00eas.<\/p>\n<p>(eu sei que este ponto vai dar pano pra manga, ent\u00e3o podem me atacar ok? :) )<\/p>\n<h3>Ent\u00e3o como eu evito falar bobagem por a\u00ed?<\/h3>\n<p>Muito simples: seu sistema tem algum requisito de tempo-real? H\u00e1 algum do tipo &#8220;deve executar em no m\u00e1ximo n milisegundos&#8221; ou &#8220;deve ser executado na hora x&#8221; ou &#8220;vai ter de se repetir precisamente de n em n segundos&#8221; ou qualquer coisa do g\u00eanero? Tem? Ok: voc\u00ea tem um sistema de tempo real. De qual tipo? Hard? Soft? Se for soft, n\u00e3o h\u00e1 vantagem alguma, ent\u00e3o por que bradar por a\u00ed?<\/p>\n<p>Agora, sair dizendo que desenvolve sistemas de &#8220;tempo real&#8221; com Node.js sem estes requisitos te caracteriza como ignorante ok? :)<\/p>\n<h3>Recursos sobre tempo real<\/h3>\n<p>Quer saber mais sobre o assunto? Aqui est\u00e1 uma lista de recursos interessantes pra voc\u00ea.<\/p>\n<ul>\n<li><span style=\"line-height: 1.5;\">&#8220;The Concise Handbook of Real-Time Systems&#8221;: uma introdu\u00e7\u00e3o maravilhosa ao assunto. Clique <\/span><a style=\"line-height: 1.5;\" href=\"https:\/\/www.ece.cmu.edu\/~ece749\/docs\/RTSHandbook.pdf\">aqui<\/a><span style=\"line-height: 1.5;\">.<\/span><\/li>\n<li>Conceitos relacionados a sistemas operacionais de tempo real (RTOS) voc\u00ea encontra <a href=\"http:\/\/www.chibios.org\/dokuwiki\/doku.php?id=chibios:articles:rtos_concepts\">aqui<\/a>.<\/li>\n<li>Alguns padr\u00f5es de projeto podem ser encontrados\u00a0<a href=\"http:\/\/www.eventhelix.com\/realtimemantra\/patterns\/\">aqui<\/a>.<\/li>\n<\/ul>\n<h3>Concluindo<\/h3>\n<p>O objetivo deste post foi desmistificar o uso que vejo sendo feito em todo lugar do termo tempo-real. Realmente n\u00e3o consigo entender qual \u00e9 o tempo-real a que se referem pois n\u00e3o vejo as restri\u00e7\u00f5es temporais que tanto falei aqui e encontram-se confirmadas nos recursos que listei.<\/p>\n<p>(se voc\u00ea \u00e9 leitor antigo deste blog sabe que \u00e9 uma luta antiga minha esta minha busca pelo melhor termo sempre)<\/p>\n<p>Termino o post com perguntas ao leitor: e a\u00ed, \u00e9 tempo-real mesmo? Que tempo-real \u00e9 este? Como posso dizer que algo \u00e9 de tempo-real se n\u00e3o h\u00e1 restri\u00e7\u00f5es temporais expl\u00edcitas?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O que \u00e9 tempo-real? O que o pessoal anda chamando de tempo-real \u00e9 realmente tempo-real? Node.js ou websocket realmente me propiciam uma web &#8220;real time&#8221;? Vou tentar responder a todas estas perguntas neste post com a vis\u00e3o de algu\u00e9m que trabalha em um sistema de tempo-real de verdade (eu). Como a computa\u00e7\u00e3o define tempo-real Quando [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[36],"tags":[],"class_list":["post-1698","post","type-post","status-publish","format-standard","hentry","category-desenvolvimento-de-software"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Que &quot;tempo real&quot; \u00e9 este de que falam tanto? - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=1698\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Que &quot;tempo real&quot; \u00e9 este de que falam tanto? - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"O que \u00e9 tempo-real? O que o pessoal anda chamando de tempo-real \u00e9 realmente tempo-real? Node.js ou websocket realmente me propiciam uma web &#8220;real time&#8221;? Vou tentar responder a todas estas perguntas neste post com a vis\u00e3o de algu\u00e9m que trabalha em um sistema de tempo-real de verdade (eu). Como a computa\u00e7\u00e3o define tempo-real Quando [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=1698\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2013-12-22T01:02:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-12-22T01:03:55+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2013\/12\/daliclock-300x216.jpg\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1698\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=1698\",\"name\":\"Que \\\"tempo real\\\" \u00e9 este de que falam tanto? - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1698#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1698#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock-300x216.jpg\",\"datePublished\":\"2013-12-22T01:02:30+00:00\",\"dateModified\":\"2013-12-22T01:03:55+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1698#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=1698\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1698#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock.jpg\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock.jpg\",\"width\":500,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1698#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Que &#8220;tempo real&#8221; \u00e9 este de que falam tanto?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Que \"tempo real\" \u00e9 este de que falam tanto? - \/dev\/Kico","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:\/\/devkico.itexto.com.br\/?p=1698","og_locale":"pt_BR","og_type":"article","og_title":"Que \"tempo real\" \u00e9 este de que falam tanto? - \/dev\/Kico","og_description":"O que \u00e9 tempo-real? O que o pessoal anda chamando de tempo-real \u00e9 realmente tempo-real? Node.js ou websocket realmente me propiciam uma web &#8220;real time&#8221;? Vou tentar responder a todas estas perguntas neste post com a vis\u00e3o de algu\u00e9m que trabalha em um sistema de tempo-real de verdade (eu). Como a computa\u00e7\u00e3o define tempo-real Quando [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=1698","og_site_name":"\/dev\/Kico","article_published_time":"2013-12-22T01:02:30+00:00","article_modified_time":"2013-12-22T01:03:55+00:00","og_image":[{"url":"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2013\/12\/daliclock-300x216.jpg"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=1698","url":"https:\/\/devkico.itexto.com.br\/?p=1698","name":"Que \"tempo real\" \u00e9 este de que falam tanto? - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1698#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1698#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock-300x216.jpg","datePublished":"2013-12-22T01:02:30+00:00","dateModified":"2013-12-22T01:03:55+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1698#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=1698"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=1698#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock.jpg","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/12\/daliclock.jpg","width":500,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=1698#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Que &#8220;tempo real&#8221; \u00e9 este de que falam tanto?"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1698"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1698"}],"version-history":[{"count":2,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1698\/revisions"}],"predecessor-version":[{"id":1701,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1698\/revisions\/1701"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1698"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}