SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Chat NodeJS em
Produção
Willian Carvalho
@chambftw
willian_carvalho (Freenode)
Qual é o objetivo da
apresentação?
Apresentar os requisitos do projeto
Falar dos problemas enfrentados
Falar das soluções escolhidas
Experiência com o Node na vida real
Compartilhar com outros devs
Requisitos da aplicação
Conexão segura SSL
Múltiplas empresas
Somente para usuários autenticados
Possibilitar outro serviços plugáveis
Ferramentas
Socket.IO - Abstração de websocket e fallbacks
Express - Web server de comunicação com sistema legado
Módulo http - HTTP Client
Módulo https - Oferecer https://
Módulo fs - Leitura de arquivos do certificado SSL
Estrutura do projeto
Websocket Server (ws_server.js)
Namespace por empresa (tenant.js)
Chat service (chatService.js)
Configurações (package.json)
Estrutura do projeto
Workflow da aplicação
package.json
"pCn" {
apof:
"htot:99,
caPr" 00
"e" "ro/s-ie/ayo.e"
ky: /otslflsqbyuky,
"et:"ro/s-ie/ayo.r"
cr" /otslflsqbyuct,
"a:"ro/s-ie/ditreit.r"
c" /otslflsg_nemdaect
}
vrapof=rqie'/akg.sn)apof
a pCn
eur(.pcaejo'.pCn;
ws_server.js
sre =gttpSre(;
evr
eHtsevr)
i =rqie'okti'.itnsre)
o
eur(sce.o)lse(evr;
i.okt.n'oncin,oCneto)
osceso(cneto' noncin;
i.ofgr(pouto' fnto( {
ocniue'rdcin, ucin)
i.e(atoiain,dAt)
ost'uhrzto' ouh;
/Ti fxsise wt triaigteSLi foto
/hs ie sus ih emntn h S n rn f
/Nd adfriglcto t tiki' wsisedo w.
/oe n ocn oain o hn ts s nta f s
i.e(mthoii pooo' tu)
ost'ac rgn rtcl, re;
i.e(lglvl,0;
ost'o ee' )

};
)
sre.itnsrePr)
evrlse(evrot;
ws_server.js:getHttpsServer
fnto gttpSre( {
ucin eHtsevr)
vrotos={
a pin
ky f.edieyccni.e)
e: sraFlSn(ofgky,
cr:f.edieyccni.et,
et sraFlSn(ofgcr)
c:f.edieyccni.a,
a sraFlSn(ofgc)
rqetet fle
eusCr: as
}
,
epes=rqie'xrs',
xrs
eur(epes)
ap=epes)
p
xrs(;
}

rtr rqie'tp'.raeevrotos ap;
eun eur(hts)cetSre(pin, p)
ws_server.js:doAuth
fnto dAt(adhkDt,clbc){
ucin ouhhnsaeaa alak
vrhaes=hnsaeaahaes
a edr
adhkDt.edr,
coi =haescoi,
oke
edr.oke
hs =gtr(edr.ot,
ot
eUlhaeshs)
bfe =',
ufr
'
otos={
pin
hsnm:hs,
otae ot
pr:43
ot 4,
pt:rs_evc_r,
ah etsrieul
haes {oke coi}
edr: coi: oke
}
;

}

rqetsraaotos;
eusUeDt(pin)
clbc(ul tu)
alaknl, re;
ws_server.js:onConnection
fnto oCneto(okt {
ucin noncinsce)
vrueDt =gtsraasce.adhk)
a sraa
eUeDt(okthnsae,
tnnN ='tnn'+ueDt.eatd
eatS
/eat
sraatnnI;
i(sraatnnI & tnnN i nmsae ==fle {
fueDt.eatd & eatS n aepcs = as)
vrt=tnn.eIsac(o tnnN)
a
eatgtntnei, eatS;
tii(;
.nt)

}

}

nmsae[eatS =tu;
aepcstnnN]
re

No client
vrtpokt=i.onc(oktR)
a mSce
ocnetsceUL;
tpoktei(hseat,'tnn'+tnnI)
mSce.mt'aTnn' /eat
eatd;
tpokto(hseat,fnto( {
mSce.n'aTnn' ucin)
sce =i.onc(oktR +'tnn'+tnnI)
okt
ocnetsceUL
/eat
eatd;
};
)
tenant.js
eprsgtntne=fnto(o n){
xot.eIsac
ucini, s
fnto ii( {
ucin nt)
caSriegtntne)
htevc.eIsac(;
cnoelg'trigtnn " +n +'';
osl.o(Satn eat '
s
")
nSces=i.fn)
sokt
oo(s;
nSceso(cneto' oCneto)
sokt.n'oncin, noncin;
}
..
.
}
;

rtr {nt ii}
eun ii: nt;
chatService.js
eprsgtntne=fnto( {
xot.eIsac
ucin)
rtr {
eun
ii:fnto( {
nt ucin)
vrsl =ti;
a ef
hs
ti.sokt.n'oncin,fnto(okt {
hsnSceso(cneto' ucinsce)
sl.idvnssce)
efbnEet(okt;
};
)
}
,
bnEet:fnto(okt {
idvns ucinsce)

}
;

}
;

}
,
..
.
Quando tudo funcionou bem...
Refactoring...
Mais refactoring!
E ainda precisa melhorar
Para fechar
Se você gosta de codar, procure ficar bom,
e não só ser um usuário (refém) de APIs
Obrigado

Más contenido relacionado

Similar a Chat node js em produção

Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Ramon Durães
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureLuciano Condé
 
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDesenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDomingos Teruel
 
Introdução ao Windows Azure
Introdução ao Windows AzureIntrodução ao Windows Azure
Introdução ao Windows AzureFernando Correia
 
Android chat app com Node.js
Android chat app com Node.jsAndroid chat app com Node.js
Android chat app com Node.jsLuiz Duarte
 
Apresentação web services
Apresentação web servicesApresentação web services
Apresentação web servicesVitor Fonseca
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaElvis Fusco
 
WCF Brasil - Introdução ao WCF
WCF Brasil - Introdução ao WCFWCF Brasil - Introdução ao WCF
WCF Brasil - Introdução ao WCFFabian Gehrke
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform BridgesCaio Chaves Garcez
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Elton Minetto
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NETPedro Alves Jr.
 
JME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoLuiz Matos
 
Geração de Código com o MyGeneration
Geração de Código com o MyGenerationGeração de Código com o MyGeneration
Geração de Código com o MyGenerationComunidade NetPonto
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesAdriano Teixeira de Souza
 

Similar a Chat node js em produção (20)

Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Fundamentos de arquitetura Web
Fundamentos de arquitetura WebFundamentos de arquitetura Web
Fundamentos de arquitetura Web
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL Azure
 
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDesenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User Interface
 
Introdução ao Windows Azure
Introdução ao Windows AzureIntrodução ao Windows Azure
Introdução ao Windows Azure
 
Android chat app com Node.js
Android chat app com Node.jsAndroid chat app com Node.js
Android chat app com Node.js
 
Apresentação web services
Apresentação web servicesApresentação web services
Apresentação web services
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC Marília
 
WCF Brasil - Introdução ao WCF
WCF Brasil - Introdução ao WCFWCF Brasil - Introdução ao WCF
WCF Brasil - Introdução ao WCF
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform Bridges
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NET
 
JME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
JME Web Services API: um estudo de caso
 
Geração de Código com o MyGeneration
Geração de Código com o MyGenerationGeração de Código com o MyGeneration
Geração de Código com o MyGeneration
 
Phonegap
PhonegapPhonegap
Phonegap
 
REST com Python
REST com PythonREST com Python
REST com Python
 
Web Services XML - .NET framework
Web Services XML - .NET frameworkWeb Services XML - .NET framework
Web Services XML - .NET framework
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web Services
 

Chat node js em produção