WebSocket JSON Hackday


Published on

1 Comment
  • Free Download : http://gg.gg/114bb

    Hey Guyz and girls, Today I am gonna show you perfact tool, Remember This video is old, But the download link with hack is brand new. Its very simple to using this tool and here are some instructions in video. Please REDOWNLOAD. Don't Forget to Comment Subscribe & Rate My Video :)

    Virus Scan :- This file has been scanned with avast! Antivirus. -- Status: FILE IS CLEANN.

    Copyright © 2014. All Rights Reserved
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

WebSocket JSON Hackday

  1. 1. WebSocket & JSON JavaAPIs HackdayBy Somay Nakhal @SomayNakhal David Illsley @davidillsley 1
  2. 2. Hackday ?∀ Adapt A JSR programme∀ Explore new APIs∀ JSR 353 JSON Processing API∀ JSR 356 WebSockets API∀ Provide feedback 2
  3. 3. WebSocket and Java 3
  4. 4. ∀ Interactive web application∀ HTTP is half-duplex∀ Polling∀ Long Polling∀ Comet/Ajax∀ Complex, Inefficient, Wasteful 4
  5. 5. Enter WebSocket Protocol∀ TCP based, bi-directional, full-duplex messaging∀ Part of HTML5∀ IETF-defined Protocol: RFC 6455∀ W3C defined JavaScript API∀ Uses HTTP upgrade handshake∀ Supports HTTP proxies, filtering, authentication and intermediaries 5
  6. 6. How does it work?∀ Establish connection (Single TCP connection)∀ Send messages in both direction (Bi-directional)∀ Send messages independent of each other (Full Duplex)∀ End connection 6
  7. 7. Browser Support 7caniuse.com
  8. 8. WebSocket API (JavaScript)var websocket = new WebSocket("ws://www.host.com/path");websocket.onopen = function(evt) { onOpen(evt) };websocket.onclose = function(evt) { onClose(evt) };websocket.onmessage = function(evt) { onMessage(evt) };websocket.onerror = function(evt) { onError(evt) }; }function onMessage(evt) { alert( evt.data); }function onError(evt) { alert( evt.data); }websocket.send("client to server"); 8
  9. 9. JSR 356Java API for WebSocket 9
  10. 10. JSR 356 Java API for WebSocket∀ Client and Server WebSocket protocol APIs in Java∀ Integration with Java EE Web container∀ Reference Implementation:∀ – http://java.net/projects/tyrus∀ – Bundled in latest Glassfish 4 builds 10
  11. 11. Terminology∀ Endpoint: Client or server∀ Connection: Network connection between two endpoints∀ Peer: Other endpoint of the connection∀ Session: represents a sequence of websocket interactions between and end point and a peer 11
  12. 12. Annotations∀ @WebSocketEndpoint – Class level annotation for websocket server endpoint∀ @WebSocketClient – Class level annotation for websocket client endpoint∀ @WebSocketOpen – Method level annotation signifies a method to be called whenever a new client connects to this endpoint∀ @WebSocketClose – Method level annotation signifies a method to be called whenever a new client is about to disconnects from this endpoint∀ @WebSocketMessage – Method level annotation signifies a method to be called whenever an incoming message is received 12
  13. 13. Some Code!@WebSocketEndpoint("/hello-world")public class HelloWorld { @WebSocketMessage public String sayHello(String name) { return "Hello " + name; }} 13
  14. 14. More Code!@WebSocketEndpoint("/hello-world")public class HelloWorld { private Set<Session> peers = Collections.synchronizedSet(…) @WebSocketOpen public void onOpen (Session peer) { peers.add(peer); } private void sendMessageToPeer(String message, Session peer) { peer.getRemote().sendString(s); }} 14
  15. 15. JSON and Java 15
  16. 16. In the beginning...There was XML... and the DOM... and SAX...Then, after much gnashing of teeth, there was JSON { "message" : "Hello World!" } More at json.org and wikipedia 16
  17. 17. tumbleweed... 17
  18. 18. Not Quite"The Software shall be used for Good, not Evil."From: http://www.json.org/license.html 18
  19. 19. And many more...• org.json.me.• Jackson JSON Processor.• Json-lib.• JSON Tools.• Stringtree.• SOJO.• Jettison.• json-taglib.• XStream.• Flexjson.• JON tools.• Argo.• jsonij.• fastjson.• mjson.• jjson.• json-simple.• json-io.• JsonMarshaller.• google-gson.• Json-smart.• FOSS Nova JSON. (list from json.org) 19
  20. 20. Fast-forward to December 2011JSR 353: JavaTM API for JSON Processing"JSON(JavaScript Object Notation) is a lightweight data-interchange format. Many popular web services use JSON format for invoking and returning the data. Currently Java applications use different implementation libraries to produce/consume JSON from the web services. Hence, there is a need to standardize a Java API for JSON so that applications that use JSON need not bundle the implementation libraries but use the API. Applications will be smaller in size and portable." http://jcp.org/en/jsr/detail?id=353 20
  21. 21. Goals/Non Goals"The goal of this specification is to develop such APIs to:* Produce and consume JSON text in a streaming fashion(similar to StAX API for XML)* Build a Java object model for JSON text using API classes(similar to DOM API for XML)Non-goals of this specification include:* Binding of JSON text to Java objects and vice versa.""This JSR is targeted for Java SE 6 or higher and Java EE 7 or higher platforms." http://jcp.org/en/jsr/detail?id=353 21
  22. 22. Fast-forward to February 2013Pretty much doneJust finished the formal public review phaseLooking for final feedback from JUGs... and to get the word out about whats coming 22
  23. 23. Some code...JsonGenerator generator = Json.createGenerator(System.out)// or generator = Json.createGenerator(servletResponse.getWriter())generator .writeStartObject() .write("firstName", "John") .write("lastName", "Smith") .write("age", 25) .writeStartObject("address") .write("streetAddress", "21 2nd Street") .write("city", "New York") .write("state", "NY") .write("postalCode", "10021") .writeEnd() .writeStartArray("phoneNumber") .writeStartObject() .write("type", "home") .write("number", "212 555-1234") .writeEnd() .writeStartObject() .write("type", "fax") .write("number", "646 555-4567") .writeEnd() .writeEnd() .writeEnd(); generator.close(); 23
  24. 24. Produces{ "firstName": "John", "lastName": "Smith", "age": 25, "address" : { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ {"type": "home", "number": "212 555-1234"}, {"type": "fax", "number": "646 555-4567"} ] } (JavaDoc - JsonGenerator) http://bit.ly/11CwMde 24
  25. 25. Or to build an object model...JsonObject value = Json.createObjectBuilder() .add("firstName", "John") .add("lastName", "Smith") .add("age", 25) .add("address", Json.createObjectBuilder() .add("streetAddress", "21 2nd Street") .add("city", "New York") .add("state", "NY") .add("postalCode", "10021")) .add("phoneNumber", Json.createArrayBuilder() .add(Json.createObjectBuilder() .add("type", "home") .add("number", "212 555-1234")) .add(Json.createObjectBuilder() .add("type", "fax") .add("number", "646 555-4567"))) .build();// or from a stream..JsonObject value2 = Json.createReader(inputStream).readObject(); (JavaDoc - JsonObject) bit.ly/11CwMde 25
  26. 26. And to read things from it...int age = value2.getIntValue("age", 18);JsonObject address = value2.getValue("address", JsonObject.class);String city = "London";if(address != null){ city = address.getStringValue("city", "London");}JsonArray phoneNumbers = value2.getValue("phoneNumber", JsonArray.class);if(phoneNumbers != null){ for(JsonValue val: value2){ if(val instanceof JsonObject){ JsonObject jo = (JsonObject)val; System.out.println(jo.getStringValue("number","Number Missing"); } }} 26
  27. 27. And a low-level event APIEvent event = parser.next(); // START_OBJECT event = parser.next(); // KEY_NAME event = parser.next(); // VALUE_STRING parser.getString(); // "John" (JavaDoc - JsonParser) bit.ly/VzGWEr 27
  28. 28. JSON Hacks/WorkshopLatest version of the library not in Glassfish yet, so a small standalone maven project https://github.com/davidillsley/json-workshopIncludes tests for some uncompleted code operating on stored JSON.. see the README for more. 28
  29. 29. 29
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.