Enviar búsqueda
Cargar
Getting Started with WebSocket and Server-Sent Events in Java
•
16 recomendaciones
•
6,732 vistas
Arun Gupta
Seguir
Getting Started with WebSocket and Server-Sent Events in Java
Leer menos
Leer más
Tecnología
Noticias y política
Denunciar
Compartir
Denunciar
Compartir
1 de 39
Recomendados
Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!
Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!
Masoud Kalali
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Codemotion
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
jaxconf
The HTML5 WebSocket API
The HTML5 WebSocket API
David Lindkvist
Getting Started with WebSockets and Server-Sent Events
Getting Started with WebSockets and Server-Sent Events
Arun Gupta
HTML5 WebSocket Introduction
HTML5 WebSocket Introduction
Marcelo Jabali
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the Web
Peter Lubbers
vlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentation
Volodymyr Lavrynovych
Recomendados
Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!
Server Sent Events, Async Servlet, Web Sockets and JSON; born to work together!
Masoud Kalali
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Codemotion
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
jaxconf
The HTML5 WebSocket API
The HTML5 WebSocket API
David Lindkvist
Getting Started with WebSockets and Server-Sent Events
Getting Started with WebSockets and Server-Sent Events
Arun Gupta
HTML5 WebSocket Introduction
HTML5 WebSocket Introduction
Marcelo Jabali
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the Web
Peter Lubbers
vlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentation
Volodymyr Lavrynovych
WebSockets in JEE 7
WebSockets in JEE 7
Shahzad Badar
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
Bruce Snyder
Realtime web application with java
Realtime web application with java
JeongHun Byeon
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
Ulf Wendel
Android and REST
Android and REST
Roman Woźniak
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
James Falkner
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
Joshua Long
Grizzly 20080925 V2
Grizzly 20080925 V2
Eduardo Pelegri-Llopart
HTML5 WebSockets
HTML5 WebSockets
Harri Hämäläinen
WebSockets with Spring 4
WebSockets with Spring 4
Sergi Almar i Graupera
Java web programming
Java web programming
Ching Yi Chan
XML and Web Services with Groovy
XML and Web Services with Groovy
Paul King
J web socket
J web socket
Hiroshi Ochi
Connecting to Web Services on Android
Connecting to Web Services on Android
sullis
Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
Bruce Snyder
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBI
Gert Vanthienen
An Introduction to Apache ServiceMix 4 - FUSE ESB
An Introduction to Apache ServiceMix 4 - FUSE ESB
Adrian Trenaman
V2 peter-lubbers-sf-jug-websocket
V2 peter-lubbers-sf-jug-websocket
brent bucci
Android webservices
Android webservices
Krazy Koder
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
jaxLondonConference
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Arun Gupta
WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo Conectado
Bruno Borges
Más contenido relacionado
La actualidad más candente
WebSockets in JEE 7
WebSockets in JEE 7
Shahzad Badar
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
Bruce Snyder
Realtime web application with java
Realtime web application with java
JeongHun Byeon
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
Ulf Wendel
Android and REST
Android and REST
Roman Woźniak
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
James Falkner
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
Joshua Long
Grizzly 20080925 V2
Grizzly 20080925 V2
Eduardo Pelegri-Llopart
HTML5 WebSockets
HTML5 WebSockets
Harri Hämäläinen
WebSockets with Spring 4
WebSockets with Spring 4
Sergi Almar i Graupera
Java web programming
Java web programming
Ching Yi Chan
XML and Web Services with Groovy
XML and Web Services with Groovy
Paul King
J web socket
J web socket
Hiroshi Ochi
Connecting to Web Services on Android
Connecting to Web Services on Android
sullis
Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
Bruce Snyder
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBI
Gert Vanthienen
An Introduction to Apache ServiceMix 4 - FUSE ESB
An Introduction to Apache ServiceMix 4 - FUSE ESB
Adrian Trenaman
V2 peter-lubbers-sf-jug-websocket
V2 peter-lubbers-sf-jug-websocket
brent bucci
Android webservices
Android webservices
Krazy Koder
La actualidad más candente
(19)
WebSockets in JEE 7
WebSockets in JEE 7
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
Realtime web application with java
Realtime web application with java
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
Android and REST
Android and REST
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
Grizzly 20080925 V2
Grizzly 20080925 V2
HTML5 WebSockets
HTML5 WebSockets
WebSockets with Spring 4
WebSockets with Spring 4
Java web programming
Java web programming
XML and Web Services with Groovy
XML and Web Services with Groovy
J web socket
J web socket
Connecting to Web Services on Android
Connecting to Web Services on Android
Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBI
An Introduction to Apache ServiceMix 4 - FUSE ESB
An Introduction to Apache ServiceMix 4 - FUSE ESB
V2 peter-lubbers-sf-jug-websocket
V2 peter-lubbers-sf-jug-websocket
Android webservices
Android webservices
Similar a Getting Started with WebSocket and Server-Sent Events in Java
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
jaxLondonConference
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Arun Gupta
WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo Conectado
Bruno Borges
JAX RS 2.0 - OTN Bangalore 2013
JAX RS 2.0 - OTN Bangalore 2013
Jagadish Prasath
GWT Web Socket and data serialization
GWT Web Socket and data serialization
GWTcon
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
Arun Gupta
112815 java ee8_davidd
112815 java ee8_davidd
Takashi Ito
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
Frank Greco
JavaOne San Francisco 2013 - Servlet 3.1 (JSR 340)
JavaOne San Francisco 2013 - Servlet 3.1 (JSR 340)
Shing Wai Chan
OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7
Bruno Borges
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
jaxLondonConference
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
Arun Gupta
MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.
Miguel Araújo
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.
Edward Burns
Java ee7 1hour
Java ee7 1hour
Frank Rodriguez
Java Technology
Java Technology
ifnu bima
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
Arun Gupta
JavaOne Shanghai 2013 - Servlet 3.1 (JSR 340)
JavaOne Shanghai 2013 - Servlet 3.1 (JSR 340)
Shing Wai Chan
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014
Jagadish Prasath
Java Cloud and Container Ready
Java Cloud and Container Ready
CodeOps Technologies LLP
Similar a Getting Started with WebSocket and Server-Sent Events in Java
(20)
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Getting Started with WebSocket and Server-Sent Events using Java - Arun Gupta...
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
WebSockets - Realtime em Mundo Conectado
WebSockets - Realtime em Mundo Conectado
JAX RS 2.0 - OTN Bangalore 2013
JAX RS 2.0 - OTN Bangalore 2013
GWT Web Socket and data serialization
GWT Web Socket and data serialization
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
112815 java ee8_davidd
112815 java ee8_davidd
WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
JavaOne San Francisco 2013 - Servlet 3.1 (JSR 340)
JavaOne San Francisco 2013 - Servlet 3.1 (JSR 340)
OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.
Java ee7 1hour
Java ee7 1hour
Java Technology
Java Technology
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JavaOne Shanghai 2013 - Servlet 3.1 (JSR 340)
JavaOne Shanghai 2013 - Servlet 3.1 (JSR 340)
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014
Java Cloud and Container Ready
Java Cloud and Container Ready
Más de Arun Gupta
5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
Arun Gupta
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
Arun Gupta
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
Arun Gupta
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
Arun Gupta
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
Arun Gupta
Why Amazon Cares about Open Source
Why Amazon Cares about Open Source
Arun Gupta
Machine learning using Kubernetes
Machine learning using Kubernetes
Arun Gupta
Building Cloud Native Applications
Building Cloud Native Applications
Arun Gupta
Chaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
Arun Gupta
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
Arun Gupta
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
Arun Gupta
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
Arun Gupta
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
Arun Gupta
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
Arun Gupta
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's Landscape
Arun Gupta
Container Landscape in 2017
Container Landscape in 2017
Arun Gupta
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Arun Gupta
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developers
Arun Gupta
Thanks Managers!
Thanks Managers!
Arun Gupta
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to Containers
Arun Gupta
Más de Arun Gupta
(20)
5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
Why Amazon Cares about Open Source
Why Amazon Cares about Open Source
Machine learning using Kubernetes
Machine learning using Kubernetes
Building Cloud Native Applications
Building Cloud Native Applications
Chaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's Landscape
Container Landscape in 2017
Container Landscape in 2017
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developers
Thanks Managers!
Thanks Managers!
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to Containers
Último
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Sinan KOZAK
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Roshan Dwivedi
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Paola De la Torre
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Allon Mureinik
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Malak Abu Hammad
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Katpro Technologies
Último
(20)
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Slack Application Development 101 Slides
Slack Application Development 101 Slides
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Getting Started with WebSocket and Server-Sent Events in Java
1.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.1
2.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.2 Getting Started with WebSocket and Server-Sent Event in Java Arun Gupta blogs.oracle.com/arungupta, @arungupta
3.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 16 Program Agenda § WebSocket Primer § Getting Started with WebSocket § Server-Sent Event Primer § Getting Started with Server-Sent Event § Resources
4.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.4 Interactive Web Sites § HTTP is half-duplex § HTTP is verbose § Hacks for Server Push – Polling – Long Polling – Comet/Ajax § Complex, Inefficient, Wasteful
5.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.5 WebSocket to the Rescue § TCP based, bi-directional, full-duplex messaging § Originally proposed as part of HTML5 § IETF-defined Protocol: RFC 6455 – Handshake – Data Transfer § W3C defined JavaScript API – Candidate Recommendation
6.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.6 Establish a connection Client Handshake Request Handshake Response Server
7.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.7 Handshake Request GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 "
8.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.8 Handshake Response HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat "
9.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.9 ServerClient Handshake Request Handshake Response Connected ! Establishing a Connection
10.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.10 Peer (server) Peer (client) Connected ! open open close message error message message message message Disconnected WebSocket Lifecycle
11.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.11 WebSocket API www.w3.org/TR/websockets/
12.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.12 http://caniuse.com/websockets Browser Support
13.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.13
14.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.14 Java API for WebSocket Features § API for WebSocket Server/Client Endpoints – Annotated (@ServerEndpoint, @ClientEndpoint) – Programmatic (Endpoint) § WebSocket opening handshake negotiation § Lifecycle callback handlers § Packaging with Java EE applications
15.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.15 Annotated Endpoint import javax.websocket.*; @ServerEndpoint("/hello") public class HelloBean { @OnMessage public String sayHello(String name) { return “Hello “ + name; } }"
16.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.16 Annotations Annotation Level Purpose @ServerEndpoint" class Turns a POJO into a WebSocket Endpoint @ClientEndpoint" class POJO wants to act as client @OnMessage" method Intercepts WebSocket Message events @PathParam" method parameter Flags a matched path segment of a URI-template @OnOpen" method Intercepts WebSocket Open events @OnClose" method Intercepts WebSocket Close events @OnError" method Intercepts errors during a conversation
17.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.17 @ServerEndpoint Attributes value" Relative URI or URI template e.g. /hello or /chat/{subscriber-level} decoders" list of message decoder classnames encoders" list of message encoder classnames subprotocols" list of the names of the supported subprotocols
18.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.18 Custom Payloads @ServerEndpoint( value="/hello", encoders={MyMessage.class}, decoders={MyMessage.class} ) public class MyEndpoint { . . . }" " "
19.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.19 Custom Payloads – Text public class MyMessage implements Decoder.Text<MyMessage>, Encoder.Text<MyMessage> { private JsonObject jsonObject; public MyMessage decode(String s) { jsonObject = Json.createReader(new StringReader(s)).readObject(); return this;" }" public boolean willDecode(String string) { return true; // Only if can process the payload }" " public String encode(MyMessage myMessage) { return myMessage.jsonObject.toString(); } }"
20.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.20 Custom Payloads – Binary public class MyMessage implements Decoder.Binary<MyMessage>, Encoder.Binary<MyMessage> { public MyMessage decode(byte[] bytes) { . . . return this;" }" public boolean willDecode(byte[] bytes) { . . . return true; // Only if can process the payload }" " public byte[] encode(MyMessage myMessage) { . . . } }"
21.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.21 Which methods can be @OnMessage ? § Exactly one of the following – Text: String, Java primitive or equivalent class, String and boolean, Reader, any type for which there is a decoder – Binary: byte[], ByteBuffer, byte[] and boolean, ByteBuffer and boolean, InptuStream, any type for which there is a decoder – Pong messages: PongMessage" § An optional Session parameter § 0..n String parameters annotated with @PathParam" § Return type: String, byte[], ByteBuffer, Java primitive or class equivalent or any type for which there is a encoder
22.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.22 Sample Messages § void m(String s);" § void m(Float f, @PathParam(“id”)int id);" § Product m(Reader reader, Session s);" § void m(byte[] b); or void m(ByteBuffer b);" § Book m(int i, Session s, @PathParam(“isbn”)String isbn, @PathParam(“store”)String store);"
23.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.23 Chat Server @ServerEndpoint("/chat")" public class ChatBean {" static Set<Session> peers = Collections.synchronizedSet(…); @OnOpen public void onOpen(Session peer) { peers.add(peer); } @OnClose public void onClose(Session peer) { peers.remove(peer); } . . ."
24.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.24 Chat Server . . . @OnMessage" public void message(String message, Session client) {" for (Session peer : peers) { peer.getBasicRemote().sendObject(message); } } }"
25.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.25 https://blogs.oracle.com/arungupta/entry/collaborative_whiteboard_using_websocket_in
26.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.26 WebSocket Client @ClientEndpoint public class HelloClient { @OnMessage public void message(String message, Session session) { // process message from server } } " WebSocketContainer c = ContainerProvider.getWebSocketContainer(); c.connectToServer(HelloClient.class, “hello”);" "
27.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.27 Programmatic Endpoint public class MyEndpoint extends Endpoint { @Override public void onOpen(Session session) { session.addMessageHandler(new MessageHandler.Text() { public void onMessage(String name) { try { session.getBasicRemote().sendText(“Hello “ + name); } catch (IOException ex) { } } }); } }"
28.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.28 How to view WebSocket messages ? Capture traffic on loopback
29.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.29 How to view WebSocket messages ? chrome://net-internals -> Sockets -> View live sockets
30.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.30 Server-Sent Events § Part of HTML5 Specification § Server-push notifications § Cross-browser JavaScript API: EventSource" § Message callbacks § MIME type: text/eventstream"
31.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.31 EventSource API dev.w3.org/html5/eventsource/
32.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.32 Server-Sent Events Example var url = ‘webresources/items/events’; var source = new EventSource(url);" source.onmessage = function (event) { console.log(event.data); } source.addEventListener(“size”, function(event) {" console.log(event.name + ‘ ‘ + event.data); }" Client-side
33.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.33 Server-Sent Events Example private final SseBroadcaster BROADCASTER = new SseBroadcaster(); @GET @Path("events”) @Produces(SseFeature.SERVER_SENT_EVENTS) public EventOutput fruitEvents() { final EventOutput eventOutput = new EventOutput(); BROADCASTER.add(eventOutput); return eventOutput; }
34.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.34 Server-Sent Events Example @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void addFruit(@FormParam("fruit")String fruit) { FRUITS.add(fruit); // Broadcasting an un-named event with the name of the newly added item in data BROADCASTER.broadcast(new OutboundEvent.Builder().data(String.class, fruit).build()); // Broadcasting a named "add" event with the current size of the items collection in data BROADCASTER.broadcast(new OutboundEvent.Builder().name("size").data(Integer.class, FRUITS.size()).build()); }
35.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.35 WebSocket and Server-Sent Event Competing technologies ? WebSocket Server-Sent Event Over a custom protocol Over simple HTTP Full Duplex, Bi-directional Server-Push Only, Client->Server is out-of-band (higher latency) Native support in most browsers Can be poly-filled to backport Not straight forward protocol Simpler protocol
36.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.36 WebSocket and Server-Sent Event Competing technologies ? WebSocket Server-Sent Event Pre-defined message handlers Arbitrary events Application-specific Built-in support for re-connection and event id Require server and/or proxy configurations No server or proxy changes required ArrayBuffer and Blob No support for binary types
37.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.37 Resources § Java API for WebSocket – Specification: jcp.org/en/jsr/detail?id=356 – Reference Implementation: java.net/projects/tyrus – Integrated in GlassFish Server 4.0 – Part of Java EE 7 § Server-Sent Event – Integrated in Jersey and GlassFish Server 4.0 – Not part of Java EE 7
38.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.38 The preceding material is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
39.
Copyright © 2013,
Oracle and/or its affiliates. All rights reserved.39