{"id":2135,"date":"2016-03-28T21:50:08","date_gmt":"2016-03-28T21:50:08","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2135"},"modified":"2023-06-23T05:22:38","modified_gmt":"2023-06-23T12:22:38","slug":"create-a-desktop-chat-application-using-the-cean-stack-and-electron","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/","title":{"rendered":"Crear una aplicaci\u00f3n de chat de escritorio utilizando la pila CEAN y Electron"},"content":{"rendered":"<p>As\u00ed que est\u00e1s interesado en crear una aplicaci\u00f3n de chat de escritorio como Slack, pero no est\u00e1s seguro de por d\u00f3nde empezar. Slack fue muy abierto al decir que utilizaron Github's <a href=\"https:\/\/electron.atom.io\">Electr\u00f3n<\/a> para construir la versi\u00f3n de escritorio de su software. Esto significa que Slack se desarroll\u00f3 utilizando tecnolog\u00edas web.<\/p>\n<p>Vamos a ver c\u00f3mo crear una aplicaci\u00f3n de escritorio de chat en tiempo real que no es ni de lejos tan rica en funciones como Slack, pero te dar\u00e1 una perspectiva de c\u00f3mo podr\u00edas expandirte hasta ese punto.<\/p>\n<h2>Requisitos previos<\/h2>\n<p>Aunque no requiere mucho, hay algunas cosas que necesitar\u00e1s para tener \u00e9xito con lo que viene despu\u00e9s:<\/p>\n<ul>\n<li>Servidor Couchbase 4+<\/li>\n<li>Gestor de paquetes de nodos (NPM)<\/li>\n<\/ul>\n<p>Necesitamos Couchbase Server porque todos los mensajes de chat se almacenar\u00e1n en cach\u00e9 en la base de datos despu\u00e9s de ser enviados. Esto permite que todos los que se unan a la sala de chat puedan ver los mensajes anteriores. Esto es importante porque la gente puede unirse al chat m\u00e1s tarde que los dem\u00e1s y no queremos que se pierdan nada. El Node Package Manager (NPM) es necesario porque lo usaremos para instalar Angular 2 y Electron. Est\u00e1 disponible instalando <a href=\"https:\/\/nodejs.org\">Node.js<\/a>.<\/p>\n<p>Dicho esto, empecemos a dise\u00f1ar nuestro proyecto.<\/p>\n<h2>Clonaci\u00f3n del servidor Socket.io<\/h2>\n<p>Como sabr\u00e1s, este no es el primer tutorial que escribo sobre el tema del chat en tiempo real utilizando la pila CEAN. En realidad escrib\u00ed otros dos:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/01\/create-a-real-time-chat-application-with-the-cean-stack-and-socket-io\">Creaci\u00f3n de una aplicaci\u00f3n de chat en tiempo real con CEAN Stack y Socket.io<\/a><\/li>\n<li><a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/01\/creating-a-real-time-chat-application-with-ionic-2-and-socket-io\/\">C\u00f3mo crear una aplicaci\u00f3n de chat en tiempo real con Ionic 2 y Socket.io<\/a><\/li>\n<\/ul>\n<p>Para ahorrarnos algo de tiempo, vamos a utilizar el c\u00f3digo del lado del servidor que desarrollamos en el primer tutorial de la pila CEAN, no en el tutorial de Ionic 2. Si a\u00fan no lo has hecho, te recomiendo que lo leas. Sin embargo, puedes obtener el c\u00f3digo fuente en <a href=\"https:\/\/github.com\/couchbaselabs\/cean-web-chat\">descargarlo<\/a> desde GitHub, o ejecutando lo siguiente desde su Terminal (Mac y Linux) o S\u00edmbolo del sistema (Windows):<\/p>\n<pre><code>\r\ngit clone https:\/\/github.com\/couchbaselabs\/cean-web-chat\r\n<\/code><\/pre>\n<p>Con el c\u00f3digo del lado del servidor descargado, navegue en el proyecto utilizando su S\u00edmbolo del sistema o Terminal e instale todas las dependencias ejecutando:<\/p>\n<pre><code>\r\nnpm instalar\r\n<\/code><\/pre>\n<p>En este punto, el c\u00f3digo del servidor de chat ya est\u00e1 listo.<\/p>\n<h3>Configuraci\u00f3n de Couchbase<\/h3>\n<p>Dado que Couchbase se utilizar\u00e1 con la aplicaci\u00f3n Node.js, necesitamos un bucket configurado y con permiso para utilizar consultas N1QL. Todo esto se explic\u00f3 en el primer <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/01\/create-a-real-time-chat-application-with-the-cean-stack-and-socket-io\">Tutorial de chat sobre la pila CEAN<\/a>pero s\u00f3lo para refrescar, ve\u00e1moslo de nuevo.<\/p>\n<p>Instale una copia de Couchbase Server 4 y cree un bucket llamado <strong>web-chat<\/strong> que tiene habilitado el servicio de consultas. Como vamos a utilizar consultas N1QL necesitamos crear un \u00edndice primario. Esto se puede hacer usando el cliente Couchbase Query (CBQ). En Mac ejecuta lo siguiente desde un Terminal:<\/p>\n<pre><code>\r\n.\/Applications\/Couchbase Server.app\/Contents\/Resources\/couchbase-core\/bin\/cbq\r\n<\/code><\/pre>\n<p>Lo mismo se puede hacer en Windows utilizando el s\u00edmbolo del sistema de la siguiente manera:<\/p>\n<pre><code>\r\nC:\/Archivos de programa\/Couchbase\/Server\/bin\/cbq.exe\r\n<\/code><\/pre>\n<p>Con CBQ abierto, ejecute lo siguiente para crear un \u00edndice:<\/p>\n<pre><code>\r\nCREATE PRIMARY INDEX ON `web-chat` USING GSI;\r\n<\/code><\/pre>\n<p>Couchbase Server ya est\u00e1 listo para funcionar.<\/p>\n<h2>Creaci\u00f3n de un proyecto Electron<\/h2>\n<p>Nuestro proyecto Electron va a ser un mont\u00f3n de cortar y pegar cuando se trata de c\u00f3digo. Esto se debe a que Electron pr\u00e1cticamente acepta cualquier aplicaci\u00f3n web que le eches. Recuerda que tenemos una aplicaci\u00f3n web muy adecuada dentro de nuestro proyecto de servidor Socket.io.<\/p>\n<p>Crea un nuevo directorio, quiz\u00e1s en tu Escritorio, y ll\u00e1malo <strong>chat de escritorio<\/strong> o lo que considere m\u00e1s apropiado. Navegue en el proyecto con su Terminal o S\u00edmbolo del sistema y ejecute lo siguiente:<\/p>\n<pre><code>\r\nnpm init -y\r\n<\/code><\/pre>\n<p>Esto crea un NPM muy b\u00e1sico <strong>paquete.json<\/strong> en nuestro proyecto. Ahora necesitamos instalar todas las dependencias de nuestra aplicaci\u00f3n de escritorio. Ejecute lo siguiente:<\/p>\n<pre><code>\r\nnpm install angular2@2.0.0-beta.0 systemjs typescript --save\r\nnpm install electron-prebuilt --save-dev\r\n<\/code><\/pre>\n<p>La primera instalaci\u00f3n obtendr\u00e1 todas nuestras dependencias de Angular 2. En el proyecto del lado del servidor, la interfaz de usuario de cara al cliente se hizo con Angular 2 y TypeScript. Haremos lo mismo aqu\u00ed. La segunda instalaci\u00f3n obtiene el binario de Electron.<\/p>\n<p>Ahora abra el <strong>paquete.json<\/strong> que se encuentra en la ra\u00edz del proyecto e intercambia el archivo <strong>guiones<\/strong> parte con lo siguiente:<\/p>\n<pre><code>\r\n\"scripts\": {\r\n  \"start\": \"electron main.js\"\r\n},\r\n<\/code><\/pre>\n<p>Pronto veremos lo que eso significa, pero primero crea un <strong>main.js<\/strong> en la ra\u00edz del proyecto. Debe contener el siguiente c\u00f3digo:<\/p>\n<pre><code>\r\nvar app = require('app');  \/\/ Module to control application life.\r\nvar BrowserWindow = require('browser-window');  \/\/ Module to create native browser window.\r\n\r\n\/\/ Keep a global reference of the window object, if you don't, the window will\r\n\/\/ be closed automatically when the JavaScript object is garbage collected.\r\nvar mainWindow = null;\r\n\r\n\/\/ Quit when all windows are closed.\r\napp.on('window-all-closed', function() {\r\n    \/\/ On OS X it is common for applications and their menu bar\r\n    \/\/ to stay active until the user quits explicitly with Cmd + Q\r\n    if (process.platform != 'darwin') {\r\n        app.quit();\r\n    }\r\n});\r\n\r\n\/\/ This method will be called when Electron has finished\r\n\/\/ initialization and is ready to create browser windows.\r\napp.on('ready', function() {\r\n    \/\/ Create the browser window.\r\n    mainWindow = new BrowserWindow({width: 800, height: 600});\r\n\r\n    \/\/ and load the index.html of the app.\r\n    mainWindow.loadURL('file:\/\/' + __dirname + '\/public\/index.html');\r\n\r\n    \/\/ Emitted when the window is closed.\r\n    mainWindow.on('closed', function() {\r\n        \/\/ Dereference the window object, usually you would store windows\r\n        \/\/ in an array if your app supports multi windows, this is the time\r\n        \/\/ when you should delete the corresponding element.\r\n        mainWindow = null;\r\n    });\r\n});\r\n<\/code><\/pre>\n<p>Lo anterior puede parecer familiar por dos razones. La primera es que lo tom\u00e9 de un <a href=\"https:\/\/www.couchbase.com\/blog\/es\/build-a-desktop-app-with-github-electron-and-couchbase\/\">entrada anterior<\/a> Escrib\u00ed sobre Electron y dos, vino casi directamente de la documentaci\u00f3n de Electron. Nuestra l\u00ednea importante, sin embargo, es la siguiente:<\/p>\n<pre><code>\r\nmainWindow.loadURL('file:\/\/' + __dirname + '\/public\/index.html');\r\n<\/code><\/pre>\n<p>Esto significa que todo nuestro c\u00f3digo Angular 2 estar\u00e1 en el directorio <strong>p\u00fablico<\/strong> empezando por el directorio <strong>index.html<\/strong> archivo.<\/p>\n<p>Copie el <strong>p\u00fablico<\/strong> del directorio <strong>cean-web-chat<\/strong> que clonaste de GitHub, y col\u00f3calo en la ra\u00edz del proyecto Electron. Ya existe un <strong>index.html<\/strong> pero tenemos que cambiar algunas cosas. \u00c1bralo y cambie el <strong>script<\/strong> caminos a los siguientes:<\/p>\n<pre><code>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<\/code><\/pre>\n<p>Hicimos esto porque nuestras rutas de biblioteca no est\u00e1n en el mismo lugar que estaban en la aplicaci\u00f3n del lado del servidor.<\/p>\n<p>Unas pocas cosas m\u00e1s que hacer antes de que estemos listos para verlo en acci\u00f3n. Abre el archivo <strong>public\/app\/default\/default.ts<\/strong> y crear una nueva variable dentro de la clase como tal:<\/p>\n<pre><code>\r\nsocketHost: string;\r\n<\/code><\/pre>\n<p>Esto debe hacerse dentro de la clase. Como ya no estamos en el mismo host que el servidor, necesitamos decirle a nuestro cliente de escritorio a qu\u00e9 host conectarse. Dentro del constructor, establece <strong>socketHost<\/strong> a lo que deber\u00eda ser el anfitri\u00f3n:<\/p>\n<pre><code>\r\nthis.socketHost = \"https:\/\/192.168.57.1:3000\";\r\n<\/code><\/pre>\n<p>Nuestra petici\u00f3n HTTP en el constructor ya no es v\u00e1lida porque nuestro cliente no est\u00e1 incluido en el servidor. Necesitamos definir el host que acabamos de establecer. Se puede hacer as\u00ed:<\/p>\n<pre><code>\r\nhttp.get(this.socketHost + \"\/fetch\").subscribe((success) =&gt; {\r\n<\/code><\/pre>\n<p>Finalmente, encuentra la l\u00ednea donde defines tu objeto Socket.io. Tambi\u00e9n necesita un host al que apuntar. C\u00e1mbialo para que se parezca a lo siguiente:<\/p>\n<pre><code>\r\nthis.socket = io(this.socketHost);\r\n<\/code><\/pre>\n<p>A estas alturas ya deber\u00edas estar bien.<\/p>\n<h2>Verlo en acci\u00f3n<\/h2>\n<p>Necesitar\u00e1s dos Terminales abiertas para esto. La primera Terminal ejecutar\u00e1 el servidor Socket.io Node.js que se conecta a Couchbase Server. Ejecuta lo siguiente, con el proyecto GitHub como tu directorio de trabajo, para hacerlo:<\/p>\n<pre><code>\r\nnode app.js\r\n<\/code><\/pre>\n<p>Si el servidor arranc\u00f3, entonces est\u00e1s en buena forma. En la segunda Terminal, ejecute lo siguiente, con el proyecto Electron como directorio de trabajo:<\/p>\n<pre><code>\r\nnpm iniciar\r\n<\/code><\/pre>\n<p>Recuerda que hicimos el <strong>iniciar<\/strong> dentro de nuestro <strong>paquete.json<\/strong> \u00bfFichero? As\u00ed es como lo utilizamos.<\/p>\n<p>Intenta enviar algunos mensajes. Deber\u00edan guardarse en Couchbase Server y si abres otro cliente o cargas el cliente de chat embebido del proyecto GitHub, podr\u00e1s hacer un chat.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Acabas de ver c\u00f3mo convertir una aplicaci\u00f3n web existente en una aplicaci\u00f3n de escritorio multiplataforma. Esta aplicaci\u00f3n ofrec\u00eda chat en tiempo real utilizando tecnolog\u00edas punteras como Angular 2, Couchbase, Socket.io y Node.js.<\/p>\n<p>Si a\u00fan no lo has hecho, te recomiendo que le eches un vistazo a los posts anteriores que hice sobre el tema de Socket.io con Couchbase. Son buenas lecturas y pueden abrir la puerta a posibilidades para ti.<\/p>","protected":false},"excerpt":{"rendered":"<p>So you&#8217;re interested in creating a desktop chat application like Slack, but aren&#8217;t sure where to start. Slack was very open in saying that they used Github&#8217;s Electron platform for building the desktop version of their software. This means that [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1822],"tags":[1578,1577,1575,1549],"ppma_author":[9032],"class_list":["post-2135","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-node-js","tag-angular-2","tag-cross-platform","tag-desktop","tag-electron"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Desktop Chat Application using the CEAN Stack &amp; Electron<\/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:\/\/www.couchbase.com\/blog\/es\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create a Desktop Chat Application using the CEAN Stack and Electron\" \/>\n<meta property=\"og:description\" content=\"So you&#8217;re interested in creating a desktop chat application like Slack, but aren&#8217;t sure where to start. Slack was very open in saying that they used Github&#8217;s Electron platform for building the desktop version of their software. This means that [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-28T21:50:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-23T12:22:38+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Create a Desktop Chat Application using the CEAN Stack and Electron\",\"datePublished\":\"2016-03-28T21:50:08+00:00\",\"dateModified\":\"2023-06-23T12:22:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/\"},\"wordCount\":1149,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"angular 2\",\"cross platform\",\"desktop\",\"electron\"],\"articleSection\":[\"Application Design\",\"Node.js\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/\",\"name\":\"Desktop Chat Application using the CEAN Stack & Electron\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-03-28T21:50:08+00:00\",\"dateModified\":\"2023-06-23T12:22:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a Desktop Chat Application using the CEAN Stack and Electron\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Desktop Chat Application using the CEAN Stack & Electron","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.couchbase.com\/blog\/es\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/","og_locale":"es_MX","og_type":"article","og_title":"Create a Desktop Chat Application using the CEAN Stack and Electron","og_description":"So you&#8217;re interested in creating a desktop chat application like Slack, but aren&#8217;t sure where to start. Slack was very open in saying that they used Github&#8217;s Electron platform for building the desktop version of their software. This means that [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-03-28T21:50:08+00:00","article_modified_time":"2023-06-23T12:22:38+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Create a Desktop Chat Application using the CEAN Stack and Electron","datePublished":"2016-03-28T21:50:08+00:00","dateModified":"2023-06-23T12:22:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/"},"wordCount":1149,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["angular 2","cross platform","desktop","electron"],"articleSection":["Application Design","Node.js"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/","url":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/","name":"Desktop Chat Application using the CEAN Stack & Electron","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-03-28T21:50:08+00:00","dateModified":"2023-06-23T12:22:38+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/create-a-desktop-chat-application-using-the-cean-stack-and-electron\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create a Desktop Chat Application using the CEAN Stack and Electron"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","first_name":"Nic","last_name":"Raboy","user_url":"https:\/\/www.thepolyglotdeveloper.com","author_category":"","description":"Nic Raboy es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2135"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2135\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2135"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}