SlideShare uma empresa Scribd logo
1
TUTORIAL WEBSOCKET
1. Requisitos:
 Java 7 JDK (ou superior);
 Netbeans 8.0 (com Java EE);
 Maven (ou superior já incluído nativamente no Netbeans);
 GlassFish Server 4 Open Source Edition.
2. Implementação
2.1 WebSocket Server
Etapa 1 – Criação do projeto
Nesta etapa, vamos criar um projeto Maven do tipo WebApplication. Clique
em New Project.
2
Em seguida, selecione a categoria Maven e escolha Web Application. Clique
em Next.
Preencha os dados conforme a tabela abaixo, e selecione um local qualquer para
o projeto. Clique em Next.
3
Agora, selecione o GlassFish como servidor da aplicação. (Caso você ainda não
tenha o GlassFish 4.0 instalado em seu computador, faça-o primeiro).
4
Etapa 2 – WebSocket Endpoint
Nesta etapa, vamos criar o WebSocket Endpoint. Segundo a documentação
disponível no site da Oracle, um WebSocket Endpoint representa um objeto capaz de
lidar com comunicações via websocket (tanto no lado do servidor, quanto no lado do
cliente).
Vá para o pacote br.edu.ifes.sd.tutorial.websocket.server, clique com o botão
direito sobre ele, vá em New > Other.
Escolha a categoria Web e selecione WebSocket Endpoint. Clique em Next.
5
Novamente, preencha os dados conforme a imagem abaixo. E cliquem em
Finish.
Agora, copie o conteúdo desta classe que está no Anexo I. Compile o projeto,
caso dê algum erro, volte no tutorial e confira se está tudo certo. Não execute o projeto
ainda!
2.2 WebSocket Client
Etapa 1 – Criação do projeto
Nesta etapa, vamos criar um projeto Maven do tipo Java Application. Clique em
New Project. E em seguida, escolha a categoria Maven e selecione Java Application.
Clique em Next.
6
Preencha os dados conforme a figura abaixo. Clique em Finish.
7
Etapa 2 – Importando as dependências do projeto
Abra o arquivo pom.xml, e adicione o repositório e as bibliotecas necessárias.
Etapa 3 – Criando WebSocket Endpoint
Novamente, vamos criar um WebSocket Endpoint só que agora para o cliente.
Diferente do projeto Web, criaremos uma classe Java normal com o nome
ClientDesktopEndpoint.java.
Depois de criada, copie o conteúdo desta classe que está no Anexo II.
Em seguida crie uma classe chamada ChatApp, e copie o conteúdo desta classe
que está no Anexo III.
3. Execução
Nesta parte do tutorial, vá até o projeto WebSocket Server, compile e execute-o.
Agora que o servidor do WebSocket está executando. Vá ao projeto WebSocket Client,
compile e execute duas ou mais instancias. O que aconteceu? Todos os clientes estão recebendo
as mensagens?
<repositories>
<repository>
<id>java.net-promoted</id>
<url>https://maven.java.net/content/groups/promoted/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-client</artifactId>
<version>1.0-rc3</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-container-grizzly</artifactId>
<version>1.0-rc3</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0-b80</version>
</dependency>
</dependencies>
8
Volte nos códigos que executamos, e veja como as coisas estão funcionando. Acredito
que você conseguirá entender – pelo menos, por alto – o que está acontecendo. Tente rodar esta
aplicação de forma distribuída, e veja se o resultado é o mesmo.
9
ANEXO I – WebSocketEndpoint.java
package br.edu.ifes.sd.tutorial.websocket.server;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.EncodeException;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
/**
*
* @author Lucas
*/
@ServerEndpoint("/websocket/{client-id}")
public class WebSocketEndpoint {
private static final List<Session> clients = new ArrayList<>();
@OnOpen
public void onOpen(Session session) {
clients.add(session);
}
@OnMessage
public void onMessage(String message, @PathParam("client-id") String clientId) {
try {
for (Session client : clients) {
client.getBasicRemote().sendObject(clientId + ": " + message);
}
} catch (IOException | EncodeException ex) {
Logger.getLogger(WebSocketEndpoint.class.getName()).log(Level.SEVERE,
null, ex);
}
}
@OnClose
public void onClose(Session peer) {
clients.remove(peer);
}
}
10
ANEXO II – ClientDesktopEndpoint.java
package br.edu.ifes.sd.tutorial.websocket.client;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.ClientEndpoint;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
/**
*
* @author Lucas
*/
@ClientEndpoint
public class ClientDesktopEndpoint {
@OnOpen
public void onOpen(Session session) {
try {
System.out.println("Connected to endpoint: " + session.getBasicRemote());
session.getBasicRemote().sendText("Hello");
} catch (IOException ex) {
Logger.getLogger(ClientDesktopEndpoint.class.getName()).log(Level.SEVERE,
null, ex);
}
}
@OnMessage
public void onMessage(String message) {
System.out.println(message);
}
@OnError
public void onError(Throwable t) {
Logger.getLogger(ClientDesktopEndpoint.class.getName()).log(Level.SEVERE,
null, t);
}
}
11
ANEXO III – ClientApp.java
package br.edu.ifes.sd.tutorial.websocket.client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.ContainerProvider;
import javax.websocket.DeploymentException;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
/**
*
* @author Lucas
*/
public class ClientApp {
public Session session;
protected void start() {
try {
WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer();
String uri = "ws://localhost:8080/tutorial-websocket-server/websocket/desktop-
client";
System.out.println("Connecting to " + uri);
session = webSocketContainer.connectToServer(ClientDesktopEndpoint.class,
URI.create(uri));
} catch (DeploymentException | IOException ex) {
Logger.getLogger(ClientApp.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String args[]) {
ClientApp clientApp = new ClientApp();
clientApp.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String input = "";
try {
do {
input = bufferedReader.readLine();
if (!input.equals("exit")) {
clientApp.session.getBasicRemote().sendText(input);
}
} while (!input.equals("exit"));
} catch (IOException ex) {
Logger.getLogger(ClientApp.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

Mais conteúdo relacionado

Mais procurados

React Native - Plataformas Mobile
React Native - Plataformas MobileReact Native - Plataformas Mobile
React Native - Plataformas Mobile
Hugo Iuri
 
Introdução Vue JS
Introdução Vue JSIntrodução Vue JS
Introdução Vue JS
Leonardo Thizon Waterkemper
 
Maven introdução Muito Rápida
Maven introdução Muito RápidaMaven introdução Muito Rápida
Maven introdução Muito Rápida
Rudson Kiyoshi Souza Carvalho
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
Gustavo Lopes
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Daniel Makiyama
 
Vue.js - o framework progressivo
Vue.js - o framework progressivoVue.js - o framework progressivo
Vue.js - o framework progressivo
Vinicius Reis
 
Tutorial De Instalação Do Tomcat
Tutorial De Instalação Do TomcatTutorial De Instalação Do Tomcat
Tutorial De Instalação Do Tomcat
cleber da silva hensel
 
Testando Tomcat Com Netbeans
Testando Tomcat Com NetbeansTestando Tomcat Com Netbeans
Testando Tomcat Com Netbeans
cleber da silva hensel
 
Testes com Javascript usando Jasmine e Rhino
Testes com Javascript usando Jasmine e RhinoTestes com Javascript usando Jasmine e Rhino
Testes com Javascript usando Jasmine e Rhino
Yuri Adams
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
Reinaldo Junior
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
Apostila MVC
Apostila MVCApostila MVC
Apostila MVC
André Arimura, MBA
 
Apresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache MavenApresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache Maven
Régis Eduardo Weizenmann Gregol
 
WSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatWSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao Tomcat
Edgar Silva
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
Anderson Araújo
 
Aula maven
Aula   mavenAula   maven
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
Victor Gouveia
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
Fabrício Lopes Sanchez
 

Mais procurados (20)

React Native - Plataformas Mobile
React Native - Plataformas MobileReact Native - Plataformas Mobile
React Native - Plataformas Mobile
 
Introdução Vue JS
Introdução Vue JSIntrodução Vue JS
Introdução Vue JS
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
Jboss tutorial
Jboss tutorialJboss tutorial
Jboss tutorial
 
Maven introdução Muito Rápida
Maven introdução Muito RápidaMaven introdução Muito Rápida
Maven introdução Muito Rápida
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Vue.js - o framework progressivo
Vue.js - o framework progressivoVue.js - o framework progressivo
Vue.js - o framework progressivo
 
Tutorial De Instalação Do Tomcat
Tutorial De Instalação Do TomcatTutorial De Instalação Do Tomcat
Tutorial De Instalação Do Tomcat
 
Testando Tomcat Com Netbeans
Testando Tomcat Com NetbeansTestando Tomcat Com Netbeans
Testando Tomcat Com Netbeans
 
Testes com Javascript usando Jasmine e Rhino
Testes com Javascript usando Jasmine e RhinoTestes com Javascript usando Jasmine e Rhino
Testes com Javascript usando Jasmine e Rhino
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Apostila MVC
Apostila MVCApostila MVC
Apostila MVC
 
Apresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache MavenApresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache Maven
 
WSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao TomcatWSO2 Application Server como Alternativa ao Tomcat
WSO2 Application Server como Alternativa ao Tomcat
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 

Destaque

TDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDeviceTDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDevice
Ricardo Rufino
 
Introdução à plataforma Java Embedded & IoT
Introdução à plataforma Java Embedded & IoTIntrodução à plataforma Java Embedded & IoT
Introdução à plataforma Java Embedded & IoT
Marco Antonio Maciel
 
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1Denis Storti da Silva
 
QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...
QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...
QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...
Jorge Maia
 
Selecionando application procotocols para IoT
Selecionando application procotocols para IoTSelecionando application procotocols para IoT
Selecionando application procotocols para IoT
cesar231084
 
Localização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentesLocalização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentes
André Curvello
 
Esp8266 + lua
Esp8266 + luaEsp8266 + lua
Esp8266 + lua
Nelson Saraiva
 
MQTT in the Internet of Things | Loop by Litmus Automation
MQTT in the Internet of Things | Loop by Litmus AutomationMQTT in the Internet of Things | Loop by Litmus Automation
MQTT in the Internet of Things | Loop by Litmus Automation
Litmusautomation
 
DENIS_Comparacao_de_Protocolos_de_Comunicacao
DENIS_Comparacao_de_Protocolos_de_ComunicacaoDENIS_Comparacao_de_Protocolos_de_Comunicacao
DENIS_Comparacao_de_Protocolos_de_ComunicacaoDenis Storti da Silva
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
Suzana Viana Mota
 
JavaScript Robotics: Nodebots, JavaScript Além das telas
JavaScript Robotics: Nodebots, JavaScript Além das telasJavaScript Robotics: Nodebots, JavaScript Além das telas
JavaScript Robotics: Nodebots, JavaScript Além das telas
Felipe de Albuquerque
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTI
marcochella
 
Internet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redorInternet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redor
André Curvello
 
Comparing CoAP vs MQTT
Comparing CoAP vs MQTTComparing CoAP vs MQTT
Comparing CoAP vs MQTT
kellogh
 
Internet of Things (IoT) protocols COAP MQTT OSCON2014
Internet of Things (IoT) protocols  COAP MQTT OSCON2014Internet of Things (IoT) protocols  COAP MQTT OSCON2014
Internet of Things (IoT) protocols COAP MQTT OSCON2014
Vidhya Gholkar
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
André Curvello
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento Assimétrico
André Curvello
 

Destaque (17)

TDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDeviceTDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDevice
 
Introdução à plataforma Java Embedded & IoT
Introdução à plataforma Java Embedded & IoTIntrodução à plataforma Java Embedded & IoT
Introdução à plataforma Java Embedded & IoT
 
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
 
QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...
QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...
QCon Rio 2015 - IoT é muito mais que hardware conectado: explorando arquitetu...
 
Selecionando application procotocols para IoT
Selecionando application procotocols para IoTSelecionando application procotocols para IoT
Selecionando application procotocols para IoT
 
Localização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentesLocalização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentes
 
Esp8266 + lua
Esp8266 + luaEsp8266 + lua
Esp8266 + lua
 
MQTT in the Internet of Things | Loop by Litmus Automation
MQTT in the Internet of Things | Loop by Litmus AutomationMQTT in the Internet of Things | Loop by Litmus Automation
MQTT in the Internet of Things | Loop by Litmus Automation
 
DENIS_Comparacao_de_Protocolos_de_Comunicacao
DENIS_Comparacao_de_Protocolos_de_ComunicacaoDENIS_Comparacao_de_Protocolos_de_Comunicacao
DENIS_Comparacao_de_Protocolos_de_Comunicacao
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
JavaScript Robotics: Nodebots, JavaScript Além das telas
JavaScript Robotics: Nodebots, JavaScript Além das telasJavaScript Robotics: Nodebots, JavaScript Além das telas
JavaScript Robotics: Nodebots, JavaScript Além das telas
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTI
 
Internet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redorInternet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redor
 
Comparing CoAP vs MQTT
Comparing CoAP vs MQTTComparing CoAP vs MQTT
Comparing CoAP vs MQTT
 
Internet of Things (IoT) protocols COAP MQTT OSCON2014
Internet of Things (IoT) protocols  COAP MQTT OSCON2014Internet of Things (IoT) protocols  COAP MQTT OSCON2014
Internet of Things (IoT) protocols COAP MQTT OSCON2014
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento Assimétrico
 

Semelhante a Tutorial WebSocket em Java

Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
Diego Santos
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
Diego Feitoza
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Juliano Martins
 
Consumindo soap wsdl
Consumindo soap wsdlConsumindo soap wsdl
Consumindo soap wsdl
Jeison Barros
 
Tutorial instalacão java
Tutorial instalacão javaTutorial instalacão java
Tutorial instalacão java
Aparicio Junior
 
JavaFx - Introdução
JavaFx - IntroduçãoJavaFx - Introdução
JavaFx - Introdução
LuisGustavoAraujo3
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
Dr. Spock
 
Módulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows LinuxMódulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows Linux
Rodrigo Prado
 
Instalação DSpace 3.x Windows e Linux
Instalação DSpace 3.x Windows e LinuxInstalação DSpace 3.x Windows e Linux
Instalação DSpace 3.x Windows e Linux
Rodrigo Prado
 
1409243945064
14092439450641409243945064
1409243945064
Fábio Junior
 
Minicurso Java
Minicurso JavaMinicurso Java
Minicurso Java
Rogerio R. Lima Cisi
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?
Felipe Mamud
 
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...clesiojunior
 
Build Automation Evolved
Build Automation EvolvedBuild Automation Evolved
Build Automation Evolved
Marcelo Diniz
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
Fábio Nogueira de Lucena
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
Giovanni Bassi
 

Semelhante a Tutorial WebSocket em Java (20)

Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
Jsf
JsfJsf
Jsf
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
 
Consumindo soap wsdl
Consumindo soap wsdlConsumindo soap wsdl
Consumindo soap wsdl
 
Jsf
JsfJsf
Jsf
 
Tutorial instalacão java
Tutorial instalacão javaTutorial instalacão java
Tutorial instalacão java
 
JavaFx - Introdução
JavaFx - IntroduçãoJavaFx - Introdução
JavaFx - Introdução
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Módulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows LinuxMódulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows Linux
 
Instalação DSpace 3.x Windows e Linux
Instalação DSpace 3.x Windows e LinuxInstalação DSpace 3.x Windows e Linux
Instalação DSpace 3.x Windows e Linux
 
1409243945064
14092439450641409243945064
1409243945064
 
Tutorial java
Tutorial javaTutorial java
Tutorial java
 
Minicurso Java
Minicurso JavaMinicurso Java
Minicurso Java
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?
 
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...
 
Build Automation Evolved
Build Automation EvolvedBuild Automation Evolved
Build Automation Evolved
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 

Último

Química orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptxQuímica orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptx
KeilianeOliveira3
 
UFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manualUFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manual
Manuais Formação
 
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdfPowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
1000a
 
APOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdfAPOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdf
CarlosEduardoSola
 
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptxApresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
JulianeMelo17
 
Acróstico - Reciclar é preciso
Acróstico   -  Reciclar é preciso Acróstico   -  Reciclar é preciso
Acróstico - Reciclar é preciso
Mary Alvarenga
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Mary Alvarenga
 
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdfArundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Ana Da Silva Ponce
 
História Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco LeiteHistória Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco Leite
profesfrancleite
 
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Luana Neres
 
repertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enemrepertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enem
palomasampaio878
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
CarlaInsStaub
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
WelidaFreitas1
 
A nossa mini semana 2706 2906 Juliana.pptx
A nossa mini semana 2706 2906 Juliana.pptxA nossa mini semana 2706 2906 Juliana.pptx
A nossa mini semana 2706 2906 Juliana.pptx
juserpa07
 
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Biblioteca UCS
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de CarvalhoO sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
analuisasesso
 
05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx
ValdineyRodriguesBez1
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
Escola Municipal Jesus Cristo
 

Último (20)

Química orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptxQuímica orgânica e as funções organicas.pptx
Química orgânica e as funções organicas.pptx
 
UFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manualUFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manual
 
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdfPowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
 
APOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdfAPOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdf
 
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptxApresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
 
Acróstico - Reciclar é preciso
Acróstico   -  Reciclar é preciso Acróstico   -  Reciclar é preciso
Acróstico - Reciclar é preciso
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
 
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
 
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdfArundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
 
História Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco LeiteHistória Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco Leite
 
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
 
repertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enemrepertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enem
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
 
A nossa mini semana 2706 2906 Juliana.pptx
A nossa mini semana 2706 2906 Juliana.pptxA nossa mini semana 2706 2906 Juliana.pptx
A nossa mini semana 2706 2906 Juliana.pptx
 
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
 
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de CarvalhoO sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
 
05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
 

Tutorial WebSocket em Java

  • 1. 1 TUTORIAL WEBSOCKET 1. Requisitos:  Java 7 JDK (ou superior);  Netbeans 8.0 (com Java EE);  Maven (ou superior já incluído nativamente no Netbeans);  GlassFish Server 4 Open Source Edition. 2. Implementação 2.1 WebSocket Server Etapa 1 – Criação do projeto Nesta etapa, vamos criar um projeto Maven do tipo WebApplication. Clique em New Project.
  • 2. 2 Em seguida, selecione a categoria Maven e escolha Web Application. Clique em Next. Preencha os dados conforme a tabela abaixo, e selecione um local qualquer para o projeto. Clique em Next.
  • 3. 3 Agora, selecione o GlassFish como servidor da aplicação. (Caso você ainda não tenha o GlassFish 4.0 instalado em seu computador, faça-o primeiro).
  • 4. 4 Etapa 2 – WebSocket Endpoint Nesta etapa, vamos criar o WebSocket Endpoint. Segundo a documentação disponível no site da Oracle, um WebSocket Endpoint representa um objeto capaz de lidar com comunicações via websocket (tanto no lado do servidor, quanto no lado do cliente). Vá para o pacote br.edu.ifes.sd.tutorial.websocket.server, clique com o botão direito sobre ele, vá em New > Other. Escolha a categoria Web e selecione WebSocket Endpoint. Clique em Next.
  • 5. 5 Novamente, preencha os dados conforme a imagem abaixo. E cliquem em Finish. Agora, copie o conteúdo desta classe que está no Anexo I. Compile o projeto, caso dê algum erro, volte no tutorial e confira se está tudo certo. Não execute o projeto ainda! 2.2 WebSocket Client Etapa 1 – Criação do projeto Nesta etapa, vamos criar um projeto Maven do tipo Java Application. Clique em New Project. E em seguida, escolha a categoria Maven e selecione Java Application. Clique em Next.
  • 6. 6 Preencha os dados conforme a figura abaixo. Clique em Finish.
  • 7. 7 Etapa 2 – Importando as dependências do projeto Abra o arquivo pom.xml, e adicione o repositório e as bibliotecas necessárias. Etapa 3 – Criando WebSocket Endpoint Novamente, vamos criar um WebSocket Endpoint só que agora para o cliente. Diferente do projeto Web, criaremos uma classe Java normal com o nome ClientDesktopEndpoint.java. Depois de criada, copie o conteúdo desta classe que está no Anexo II. Em seguida crie uma classe chamada ChatApp, e copie o conteúdo desta classe que está no Anexo III. 3. Execução Nesta parte do tutorial, vá até o projeto WebSocket Server, compile e execute-o. Agora que o servidor do WebSocket está executando. Vá ao projeto WebSocket Client, compile e execute duas ou mais instancias. O que aconteceu? Todos os clientes estão recebendo as mensagens? <repositories> <repository> <id>java.net-promoted</id> <url>https://maven.java.net/content/groups/promoted/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-client</artifactId> <version>1.0-rc3</version> </dependency> <dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-container-grizzly</artifactId> <version>1.0-rc3</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0-b80</version> </dependency> </dependencies>
  • 8. 8 Volte nos códigos que executamos, e veja como as coisas estão funcionando. Acredito que você conseguirá entender – pelo menos, por alto – o que está acontecendo. Tente rodar esta aplicação de forma distribuída, e veja se o resultado é o mesmo.
  • 9. 9 ANEXO I – WebSocketEndpoint.java package br.edu.ifes.sd.tutorial.websocket.server; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.websocket.EncodeException; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; /** * * @author Lucas */ @ServerEndpoint("/websocket/{client-id}") public class WebSocketEndpoint { private static final List<Session> clients = new ArrayList<>(); @OnOpen public void onOpen(Session session) { clients.add(session); } @OnMessage public void onMessage(String message, @PathParam("client-id") String clientId) { try { for (Session client : clients) { client.getBasicRemote().sendObject(clientId + ": " + message); } } catch (IOException | EncodeException ex) { Logger.getLogger(WebSocketEndpoint.class.getName()).log(Level.SEVERE, null, ex); } } @OnClose public void onClose(Session peer) { clients.remove(peer); } }
  • 10. 10 ANEXO II – ClientDesktopEndpoint.java package br.edu.ifes.sd.tutorial.websocket.client; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.websocket.ClientEndpoint; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; /** * * @author Lucas */ @ClientEndpoint public class ClientDesktopEndpoint { @OnOpen public void onOpen(Session session) { try { System.out.println("Connected to endpoint: " + session.getBasicRemote()); session.getBasicRemote().sendText("Hello"); } catch (IOException ex) { Logger.getLogger(ClientDesktopEndpoint.class.getName()).log(Level.SEVERE, null, ex); } } @OnMessage public void onMessage(String message) { System.out.println(message); } @OnError public void onError(Throwable t) { Logger.getLogger(ClientDesktopEndpoint.class.getName()).log(Level.SEVERE, null, t); } }
  • 11. 11 ANEXO III – ClientApp.java package br.edu.ifes.sd.tutorial.websocket.client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.util.logging.Level; import java.util.logging.Logger; import javax.websocket.ContainerProvider; import javax.websocket.DeploymentException; import javax.websocket.Session; import javax.websocket.WebSocketContainer; /** * * @author Lucas */ public class ClientApp { public Session session; protected void start() { try { WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer(); String uri = "ws://localhost:8080/tutorial-websocket-server/websocket/desktop- client"; System.out.println("Connecting to " + uri); session = webSocketContainer.connectToServer(ClientDesktopEndpoint.class, URI.create(uri)); } catch (DeploymentException | IOException ex) { Logger.getLogger(ClientApp.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String args[]) { ClientApp clientApp = new ClientApp(); clientApp.start(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); String input = ""; try { do { input = bufferedReader.readLine(); if (!input.equals("exit")) { clientApp.session.getBasicRemote().sendText(input); } } while (!input.equals("exit")); } catch (IOException ex) { Logger.getLogger(ClientApp.class.getName()).log(Level.SEVERE, null, ex); } } }