{"id":6502,"date":"2015-01-05T04:09:17","date_gmt":"2015-01-05T04:09:17","guid":{"rendered":"https:\/\/dev.railscarma.com\/real-time-framework\/"},"modified":"2021-06-07T05:42:14","modified_gmt":"2021-06-07T05:42:14","slug":"marco-en-tiempo-real","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/marco-en-tiempo-real\/","title":{"rendered":"Marco en tiempo real"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"6502\" class=\"elementor elementor-6502\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7b381776 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7b381776\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-61bd9226\" data-id=\"61bd9226\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3bc8c4b8 elementor-widget elementor-widget-text-editor\" data-id=\"3bc8c4b8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: justify;\" align=\"LEFT\"><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">Real-time's Framework es un sistema de mensajer\u00eda bidireccional de conexi\u00f3n persistente cegadoramente r\u00e1pido. Es un medio \u00fanico para que una empresa mantenga una relaci\u00f3n en l\u00ednea en directo con sus clientes.<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">Esto tiene la enorme ventaja de permitir que la interacci\u00f3n se produzca en directo y en tiempo real, sin retrasos ni actualizaciones de p\u00e1gina, para crear una relaci\u00f3n duradera y bidireccional con cada usuario en l\u00ednea.<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\"><b>Funciona con dos componentes principales:<\/b><\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">La ORTC (Conectividad Abierta en Tiempo Real) hace posible la web en directo:<\/span><\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">\u00a0<\/span><\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">Un sistema de mensajer\u00eda de muchos a muchos en tiempo real, seguro, r\u00e1pido y altamente escalable alojado en la nube para aplicaciones web y m\u00f3viles. <\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"font-size: medium;\">\n<\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">Aqu\u00ed podemos utilizar el cliente ORTC en lugar del fragmento de c\u00f3digo xRTML proporcionado por realtime.co para las conexiones en tiempo real.<\/span><\/span><\/p>\n<span style=\"color: #000000;\"><span style=\"font-size: medium;\">El lenguaje de la Web en directo s xRTML (Extensible Realtime Multiplatform Language): Un conjunto de herramientas api para crear aplicaciones web y m\u00f3viles en tiempo real con una API f\u00e1cil de usar basada en una biblioteca JavaScript.<\/span><\/span><span style=\"font-size: medium;\">\n<\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">\u00a0\u00a0<\/span><\/span>\n<p style=\"text-align: justify;\" align=\"LEFT\"><strong><span style=\"color: #000000;\"><span style=\"font-size: medium;\">Pasos:<\/span><\/span><span style=\"font-size: medium;\">\n<\/span><\/strong><span style=\"color: #000000;\"><span style=\"font-size: medium;\">Incluye este plugin js<\/span><\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">\u00a0<\/span><\/span><a href=\"http:\/\/dfdbz2tdq3k01.cloudfront.net\/js\/2.1.0\/ortc.js\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #1c5c76;\"><span style=\"font-size: medium;\"><i><span style=\"text-decoration: underline;\">http:\/\/dfdbz2tdq3k01.cloudfront.net\/js\/2.1.0\/ortc.js<\/span><\/i><\/span><\/span><\/a><\/p>\n<span style=\"color: #000000;\"><span style=\"font-size: medium;\">Para enviar mensajes a tiempo real:<\/span><\/span>\n<blockquote>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">window.onload = function () {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">loadOrtcFactory(IbtRealTimeSJType, function (factory, error) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">if (error != null) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">alert(\"Error de f\u00e1brica: \" + error.message);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">} else {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">if (factory != null) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Crear cliente ORTC<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">var ortcClient = factory.createClient();<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Establecer las propiedades del cliente ORTC<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.setId('clientId');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.setConnectionMetadata('clientConnMeta');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">ortcClient.setClusterUrl('<\/span><\/span><span style=\"color: #1c5c76;\"><span style=\"font-family: Times New Roman,serif;\"><span style=\"font-size: medium;\"><span style=\"text-decoration: underline;\">http:\/\/ortc-developers.realtime.co\/server\/2.1\/<\/span><\/span><\/span><\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">&#8216;);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onConnected = function (ortc) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Conectado<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: medium;\">\n\/\/ Primer canal<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.subscribe('canal1', true, function (ortc, canal, mensaje) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"font-size: medium;\">console.log(mensaje)<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.unsubscribe(canal);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">});<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\"> \/\/ Segundo canal<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.subscribe('canal2', true, function (ortc, canal, mensaje) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<span style=\"font-size: medium;\">console.log(mensaje)<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.unsubscribe(canal);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">});<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onDisconnected = function (ortc) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Desconectado<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\u00a0\u00a0 <span style=\"font-size: medium;\">\n\/\/Env\u00ede aqu\u00ed sus mensajes<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onSubscribed = function (ortc, canal) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Suscrito al canal 'channel');<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.send(channel, 'Mensaje al canal');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onUnsubscribed = function (ortc, canal) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-family: Times New Roman,serif;\"><span style=\"font-size: medium;\">\/\/ Darse de baja del canal 'canal');<\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.disconnect();<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onException = function (ortc, exception) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Se ha producido una excepci\u00f3n: 'exception'<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onReconnecting = function (ortc) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Intentando reconectar<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onReconnected = function (ortc) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Reconectado<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: medium;\">ortcClient.connect('myApplicationKey', 'myAuthenticationToken');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">}<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">}<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">});<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">};<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"font-size: medium;\"> <span style=\"color: #000000;\">Para recibir mensajes de Realtime a App Frontend:<\/span>\n<span style=\"color: #000000;\"><i>\/\/Aqu\u00ed quitar\u00a0<\/i><\/span><span style=\"color: #000000;\"><i>ortcClient.onSubscribed\u00a0<\/i><\/span><span style=\"color: #000000;\"><i>funci\u00f3n<\/i><\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">window.onload = function () {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">loadOrtcFactory(IbtRealTimeSJType, function (factory, error) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">if (error != null) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">alert(\"Error de f\u00e1brica: \" + error.message);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">} else {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">if (factory != null) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Crear cliente ORTC<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">var ortcClient = factory.createClient();<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Establecer las propiedades del cliente ORTC<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.setId('clientId');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.setConnectionMetadata('clientConnMeta');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">ortcClient.setClusterUrl('<\/span><\/span><span style=\"color: #1c5c76;\"><span style=\"font-size: medium;\"><span style=\"text-decoration: underline;\">http:\/\/ortc-developers.realtime.co\/server\/2.1\/<\/span><\/span><\/span><span style=\"color: #000000;\"><span style=\"font-size: medium;\">&#8216;);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-family: Times New Roman,serif;\"><span style=\"font-size: medium;\">ortcClient.onConnected = function (ortc) {<\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Conectado<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: medium;\">\n\/\/ Primer canal<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.subscribe('canal1', true, function (ortc, canal, mensaje) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"font-size: medium;\">console.log(mensaje)<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.unsubscribe(canal);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">});<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\"> \/\/ Segundo canal<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.subscribe('canal2', true, function (ortc, canal, mensaje) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<span style=\"font-size: medium;\">console.log(mensaje)<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.unsubscribe(canal);<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">});<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onDisconnected = function (ortc) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Desconectado<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"font-size: medium;\">}<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onUnsubscribed = function (ortc, canal) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Darse de baja del canal 'canal');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.disconnect();<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-family: Times New Roman,serif;\"><span style=\"font-size: medium;\">};<\/span><\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onException = function (ortc, exception) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Se ha producido una excepci\u00f3n: 'exception'<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onReconnecting = function (ortc) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Intentando reconectar<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.onReconnected = function (ortc) {<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">\/\/ Reconectado<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">};<\/span>\n<\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">ortcClient.connect('myApplicationKey', 'myAuthenticationToken');<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">}<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">}<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\">\u00a0\u00a0\u00a0\u00a0<span style=\"font-size: medium;\">});<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">};<\/span><\/span><\/p>\n<\/blockquote>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\"><b>Nota concluyente:<\/b><\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">El marco en tiempo real es, por lo tanto, un sistema de mensajer\u00eda emergente y de r\u00e1pido crecimiento que ayuda a las empresas a servir a sus clientes a un ritmo muy r\u00e1pido y por lo tanto tambi\u00e9n evitar la brecha de tiempo de la prestaci\u00f3n de los servicios. <\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><span style=\"color: #000000;\"><span style=\"font-size: medium;\">Esto tambi\u00e9n da una ventaja competitiva a la empresa, ya que es el sistema, que es adecuado para el mundo actual de crecimiento recurrente de los negocios.<\/span><\/span><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><em>Leer m\u00e1s :\u00a0<\/em><\/p>\n\n<h5 class=\"entry-title\"><a href=\"\/es\/blog\/railes-3\/introduccion-a-la-api-de-rieles\/\" target=\"_blank\" rel=\"noopener noreferrer\">Una introducci\u00f3n a la API de Rails<\/a><\/h5>\n<h5 class=\"entry-title\"><a href=\"\/es\/blog\/gestion\/establecer-entorno-de-rieles\/\" target=\"_blank\" rel=\"noopener noreferrer\">Configurar el entorno Rails<\/a><\/h5>\n<h5 class=\"entry-title\"><a href=\"\/es\/blog\/articulos-tecnicos\/manipulacion-de-imagen\/\" target=\"_blank\" rel=\"noopener noreferrer\">Manipulaci\u00f3n de imagen<\/a><\/h5>\n<h5 class=\"entry-title\"><a href=\"\/es\/blog\/articulos-tecnicos\/instalar-rieles-de-rubi\/\" target=\"_blank\" rel=\"noopener noreferrer\">C\u00f3mo instalar Ruby sobre rieles<\/a><\/h5>\n<a href=\"\/es\/contactenos\/\">P\u00f3ngase en contacto con nosotros.<\/a>\n<p style=\"text-align: justify;\" align=\"LEFT\"><strong>Lubaib C J<\/strong><\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\">Desarrollador senior Ruby on Rails<\/p>\n<p style=\"text-align: justify;\" align=\"LEFT\"><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1698660 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1698660\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-53a1ff94\" data-id=\"53a1ff94\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7f3363e9 elementor-widget elementor-widget-heading\" data-id=\"7f3363e9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Suscr\u00edbete para recibir las \u00faltimas actualizaciones<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-76700efb elementor-widget elementor-widget-shortcode\" data-id=\"76700efb\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"cargador\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"d7f7626ab9\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"Direcci\u00f3n de correo electr\u00f3nico\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"Nombre\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Suscribir\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"es\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Art\u00edculos Relacionados<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"gema kaminari\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n        Gema Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"por qu\u00e9 contratar desarrolladores de Ruby on Rails en 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n        \u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?related_post_from=36250\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?related_post_from=36250\">\r\n        Importancia de la arquitectura de software en el desarrollo de software empresarial  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?related_post_from=36125\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"MEJORES IDES PARA EL DESARROLLO DE RUBY ON RAILS\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>Real-time's Framework es un sistema de mensajer\u00eda bidireccional de conexi\u00f3n persistente cegadoramente r\u00e1pido. Es un medio \u00fanico para que una empresa mantenga una relaci\u00f3n en l\u00ednea en directo con sus clientes. Esto tiene la enorme ventaja de permitir que la interacci\u00f3n se produzca en directo y en tiempo real, sin retrasos ni actualizaciones de p\u00e1gina, para crear una relaci\u00f3n duradera y bidireccional con cada usuario en l\u00ednea. ...<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Ruby Regex Match Guide (2026) con Ejemplos<\/span> Leer m\u00e1s \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":32067,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[615],"class_list":["post-6502","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles","tag-real-time-framework"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Real-time Framework - RailsCarma Blog<\/title>\n<meta name=\"description\" content=\"Real-time\u2019s Framework is a blindingly fast bi-directional persistently connected messaging system.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/marco-en-tiempo-real\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Real-time Framework - RailsCarma Blog\" \/>\n<meta property=\"og:description\" content=\"Real-time\u2019s Framework is a blindingly fast bi-directional persistently connected messaging system.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/marco-en-tiempo-real\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-05T04:09:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-07T05:42:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"Real-time Framework\",\"datePublished\":\"2015-01-05T04:09:17+00:00\",\"dateModified\":\"2021-06-07T05:42:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/\"},\"wordCount\":541,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg\",\"keywords\":[\"Real-time Framework\"],\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/\",\"name\":\"Real-time Framework - RailsCarma Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg\",\"datePublished\":\"2015-01-05T04:09:17+00:00\",\"dateModified\":\"2021-06-07T05:42:14+00:00\",\"description\":\"Real-time\u2019s Framework is a blindingly fast bi-directional persistently connected messaging system.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Real-time Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Framework en tiempo real - Blog RailsCarma","description":"Real-time's Framework es un sistema de mensajer\u00eda bidireccional de conexi\u00f3n persistente cegadoramente r\u00e1pido.","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:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/marco-en-tiempo-real\/","og_locale":"es_ES","og_type":"article","og_title":"Real-time Framework - RailsCarma Blog","og_description":"Real-time\u2019s Framework is a blindingly fast bi-directional persistently connected messaging system.","og_url":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/marco-en-tiempo-real\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2015-01-05T04:09:17+00:00","article_modified_time":"2021-06-07T05:42:14+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"Real-time Framework","datePublished":"2015-01-05T04:09:17+00:00","dateModified":"2021-06-07T05:42:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/"},"wordCount":541,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg","keywords":["Real-time Framework"],"articleSection":["Technical Articles"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/","name":"Framework en tiempo real - Blog RailsCarma","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg","datePublished":"2015-01-05T04:09:17+00:00","dateModified":"2021-06-07T05:42:14+00:00","description":"Real-time's Framework es un sistema de mensajer\u00eda bidireccional de conexi\u00f3n persistente cegadoramente r\u00e1pido.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2015\/01\/realtime-framework-1.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/real-time-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"Real-time Framework"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Empresa de desarrollo Ruby on Rails especializada en desarrollo offshore","description":"RailsCarma es una empresa de desarrollo de Ruby on Rails en Bangalore. Nos especializamos en el desarrollo offshore de Ruby on Rails con sede en EE. UU. e India. Contrate desarrolladores experimentados de Ruby on Rails para disfrutar de la mejor experiencia web.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RielesCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"administraci\u00f3n","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/6502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/comments?post=6502"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/6502\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media\/32067"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media?parent=6502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/categories?post=6502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/tags?post=6502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}