Dev Day 2013: Push Notification + SignalR

Post on 19-Jun-2015

1.829 views 3 download

description

Já pensou como um sistema de Push Notification de um celular funciona? Como o facebook e twitter entregam novas mensagem no seu browser sem ação do usuário? Além disso qual é a aplicabilidades desta técnica em aplicações corporativas? O objetivo desta palestra é discutir sobre o modelo de Push Notification em aplicações corporativas, para tal, utilizaremos o SignalR como framework de comunicação em tempo real explorando técnicas como Polling, Long Polling, Forever Frame e WebSockets. Se quer saber mais sobre Push Notification, comunicação em tempo real para ambientes corporativos você veio ao local correto!

Transcript of Dev Day 2013: Push Notification + SignalR

walterbh@gmail.com

Arquiteto Software

Tecnologias Microsoft

Bio

@walterbh

Walter DiasSI & EAS

Localiza Rent a CarVideo Game Whore

G33KLevel 26

bit.ly/1721Szi

Agenda

ConceitosPush

TechnologyCenários

Técnicas SignalR Demo

Alternativas Conclusão Q&A

Conhecimento é...

...poder

Informação

Dados em tempo Real

Computação em tempo real

Computação em tempo real

A • Agressivo

B • Baixo

C •Consistente

Push Technology

Push Technology

Cenários

Cenários

Cenários

HTTP Normal

ServidorCliente

Polling

Tempo

Servidor

Cliente

Polling

setInterval(function () {$.ajax({

type: "POST",url: "URL",data: "{}",contentType: "application/json; charset=utf-8",dataType: "json",success: function (msg) {

// do something...}

});}, 10000);

Long Polling

Tempo

Servidor

Cliente

Long Polling

function longPolling() {$.ajax({

type: "POST",url: "URL",data: "{}",contentType: "application/json; charset=utf-8",dataType: "json",success: function (msg) {

// do something nice...},error: function (msg) {

// do something evil...},complete: function () {

longPolling(); // call again}

});}

Server Sent Events

Servidor

Cliente

Tempo

Server Sent Events - JS

if (!window.EventSource) {alert("Seu browser é o M$IE");

}

var source = new EventSource('stream.asp');

source.addEventListener('message', function (e) {//do something

}, false);

source.addEventListener('open', function (e) {// connection was opened.

}, false);

source.addEventListener('error', function (e) {if (e.readyState == EventSource.CLOSED) {

// connection was closed.}

}, false);

Server Sent Events - Server

Content-Type: text/event-stream

data: {\ndata: "msg": "hello world",\ndata: "id": 12345\ndata: }\n\n

data, event, id, retry

Forever Frame

Servidor

Cliente

Tempo

Forever Frame

<iframe src="URL" style="visibility: hidden;">

<script>doSomething();</script>

window.parent

Web Sockets

Servidor

Cliente

Tempo

Web Sockets

function doSomething() {websocket = new WebSocket(URL);

websocket.onopen = function (evt) { };websocket.onclose = function (evt) { };websocket.onmessage = function (evt) { };websocket.onerror = function (evt) { };

websocket.send(message);websocket.close();

}

SignalR

Alternativas