Suche senden
Hochladen
Getting Started with WebSocket and Server-Sent Events in Java
•
16 gefällt mir
•
6,732 views
Arun Gupta
Folgen
Getting Started with WebSocket and Server-Sent Events in Java
Weniger lesen
Mehr lesen
Technologie
News & Politik
Melden
Teilen
Melden
Teilen
1 von 39
Empfohlen
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
Empfohlen
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
Weitere ähnliche Inhalte
Was ist angesagt?
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
Was ist angesagt?
(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
Ähnlich wie 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: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
Arun Gupta
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
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
Ähnlich wie 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: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
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
Mehr von 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
Mehr von 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
Kürzlich hochgeladen
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
Fwdays
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Alfredo García Lavilla
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
comworks
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
The Digital Insurer
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Rizwan Syed
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
SeasiaInfotech2
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
Miki Katsuragi
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
charlottematthew16
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Wonjun Hwang
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Dubai Multi Commodity Centre
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
RankYa
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Slibray Presentation
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
Kürzlich hochgeladen
(20)
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
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