{"id":2147,"date":"2019-09-21T16:04:50","date_gmt":"2019-09-21T15:04:50","guid":{"rendered":"https:\/\/exmachina.ch\/?p=2147"},"modified":"2020-02-18T12:00:00","modified_gmt":"2020-02-18T11:00:00","slug":"sentioo-a-notification-client-for-web-applications","status":"publish","type":"post","link":"https:\/\/exmachina.ch\/en\/tech\/sentioo-a-notification-client-for-web-applications\/","title":{"rendered":"Sentioo: a notification client for web app"},"content":{"rendered":"\r\n<p>Recently we open sourced on GitHub <a href=\"https:\/\/github.com\/ExMachinaSAGL\/sentioo\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"RaiseTheApp (opens in a new tab)\">sentioo<\/a>, a configurable notification system for web applications, born from the bachelor thesis of a collaborator.<\/p>\r\n\r\n\r\n\r\n<p>The key technology here is <strong>server-sent events<\/strong>.<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">What are server-sent events?<\/h4>\r\n\r\n\r\n\r\n<p><strong>Server-sent events<\/strong>\u00a0(<strong>SSE<\/strong>) is a technology enabling a browser to receive automatic updates from a server via HTTP connection. <br \/>Traditionally, a web page has to send a request to the server to receive new data; that is, the page requests data from the server. <br \/>On the contrary, with server-sent events, it&#8217;s possible for a server to send new data to a web page at any time, by pushing messages to the web page. These incoming messages can be treated as\u00a0<em>Events\u00a0+ data<\/em>\u00a0inside the web page (see <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Server-sent_events\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Server-sent events (opens in a new tab)\">Server-sent events<\/a> documentation).<\/p>\r\n\r\n\r\n\r\n<p>Server-sent events avoid you to use alternative non-fitting technologies, for simplicity or perfomance efficiency reasons. Maybe you do not need the bilateral communication protocol given by a websocket; and you already know you need something better than HTTP polling.<\/p>\r\n\r\n\r\n\r\n<p>So, if for any case, you have got data on your backend that changes, and want to visually notify the user of the change, chances are you can consider our library as a viable solution.<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">Sentioo<\/h4>\r\n\r\n\r\n\r\n<p>As often happens in informatics, <em><strong>sentioo<\/strong><\/em>\u00a0is the awkward name chosen after obscure and unintelligible developers&#8217; brainstormings.<br \/><i>Nomina\u00a0sunt\u00a0substantia\u00a0rerum:<\/i> its name reminds the fact our library &#8220;sent you&#8221; something to notify the user of, showing a nice coloured badge overlying a little bells. Click the bell, and a list of read and unread notifications appears as a dropdown.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\" style=\"text-align: center;\"><img decoding=\"async\" style=\"width: 60%;\" src=\"https:\/\/raw.githubusercontent.com\/ExMachinaSAGL\/raise-the-app\/master\/docs\/images\/dropdown.png\" alt=\"\" title=\"\"><\/figure>\r\n\r\n\r\n\r\n<p>Through the given API, you can mark a given message as read, or delete it from queue (and you also get bulk actions).<\/p>\r\n\r\n\r\n\r\n<p><em>Sentioo<\/em> works as the client for server events (you can write the server as you like, for instance we used java). Its written as a frontend module for a Vue web application, but, given the fact it is an isolated and self-sufficient module, writing a simple Vue wrapper allows you to include it in any javascript application (for instance, we used it also inside an Angular codebase).<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">License and installation<\/h4>\r\n\r\n\r\n\r\n<p><em>Sentioo<\/em> is release under <a href=\"http:\/\/www.apache.org\/licenses\/LICENSE-2.0\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">the Apache License, Version 2.0<\/a>.<\/p>\r\n\r\n\r\n\r\n<p>Refer to the <a href=\"https:\/\/github.com\/ExMachinaSAGL\/sentioo\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Sentioo public repository<\/a> on GitHub for further details, technical specification, configuration, and theme customization.\u00a0<\/p>\r\n<p>It is also available as an <a href=\"https:\/\/www.npmjs.com\/package\/sentioo\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">NPM package<\/a>.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Recently we open sourced on GitHub sentioo, a configurable notification system for web applications. Adding an alert to a web app has never been easier!<\/p>\n","protected":false},"author":3,"featured_media":5627,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[80,77,81,82],"class_list":["post-2147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-frontend","tag-javascript","tag-server-sent-events","tag-vue-js"],"_links":{"self":[{"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/posts\/2147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/comments?post=2147"}],"version-history":[{"count":0,"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/posts\/2147\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/media\/5627"}],"wp:attachment":[{"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/media?parent=2147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/categories?post=2147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exmachina.ch\/en\/wp-json\/wp\/v2\/tags?post=2147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}