1 / 30

Games, chat, and finance Toward a truly interactive web with Comet, BAM, and HMTP

Games, chat, and finance Toward a truly interactive web with Comet, BAM, and HMTP. Emil Ong Chief Evangelist. Caucho Technology. Resin has been around for 10 years Over 8000 customers, even more open source users User base consists of both early and conservative adopters

tyler
Download Presentation

Games, chat, and finance Toward a truly interactive web with Comet, BAM, and HMTP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Games, chat, and finance Toward a truly interactive web with Comet, BAM, and HMTP Emil Ong Chief Evangelist

  2. Caucho Technology • Resin has been around for 10 years • Over 8000 customers, even more open source users • User base consists of both early and conservative adopters • Now the top Java web server in NetCraft • http://survey.netcraft.com/Reports/200805/ • 340,000 domains

  3. Groundbreaking Innovations • Hessian web services protocol • Top clustering implementation • Quercus: PHP in Java • Server-push • And now... a revolutionary approach to the interactive web

  4. The Interactive Web • Common properties • Sessions are long-lived • Must be responsive/ real time • Must not overburden server • Communication is bidirectional • Killer apps • Games • Chat • Finance

  5. The Interactive Web with HTTP • Sessions are long-lived • Must be responsive/real time • Must not overburden server • Communication is bidirectional • This is harder with HTTP Comet has shown this is possible

  6. Simulating Bidirectional Communication with HTTP • Client generated events are easy • They are simply requests • AJAX just makes those requests without changing the page • What about the other direction?

  7. Sending events from server to client using HTTP • Polling • Requests at regular intervals that complete immediately • Long Polling • Requests that wait for the next event, then restart • Server-push (Comet)‏ • Socket held open with streaming updates from the server

  8. Techniques compared

  9. Server-Push (Comet)‏ • Current hot technology • Implementations • Resin • Grizzly (Glassfish)‏ • Jetty • Tomcat • All solve the problem of threads dedicated to a socket • All have a different programming model

  10. The problem of Bidirectional Communication with HTTP • Different techniques for send and receive • Use AJAX to send data from client • Use Comet to receive data on client • Two connections required* • Places limitations on TCP that were necessary for scalability in the past • A necessary evil at the moment

  11. Truly Interactive Communication • Must be capable of long-lived connections • Must be responsive/real time • Must not overburden server • Must be bidirectional • Must have a simple, coherent API/architecture

  12. Creating the architecture • Start with the communication patterns • Messages • Request/response • Truly bidirectional communication • Client -> Server • Server -> Client • Both must be supported in both patterns

  13. Creating the architecture • Representation of entities • Agents • Bidirectional communication implies that clients are first class citizens • Agents represent both clients and servers • A broker manages communication between agents

  14. Brokered Agent Messaging (BAM)‏ • Broker • Handles communication between agents • It's not CORBA • Agents • Represent both clients and services • Messaging • Messages • Request/response (asynchronous)‏

  15. Example: Sudoku • Demo

  16. Logging In Resin Client 1 Login Query Client Agent 1 Broker Client Agent 2 Client 2 Login Query Sudoku Service

  17. Starting a game Resin Client 1 Start Query Client Agent 1 Avatar Agent 1 Broker Game 1 Avatar Agent 2 Client Agent 2 Client 2 Start Query Sudoku Service Wait Result Start Result Start Message

  18. Making a Move Resin Client 1 Move Query Client Agent 1 Avatar Agent 1 Broker Move Message Move Result Game 1 Avatar Agent 2 Client Agent 2 Client 2 Sudoku Service

  19. Ending the Game Resin Client 1 Move Query Client Agent 1 Avatar Agent 1 Broker Move Message Move Result Game over Message Game over Message Game 1 Avatar Agent 2 Client Agent 2 Client 2 Sudoku Service

  20. Design notes • Agents can be long-lived • SudokuService • Client • Agents can be short-lived • SudokuAvatar • Agents are lightweight and dynamic • Non-agents can interact with the system • SudokuGame

  21. public boolean sendQuerySet(long id, String to, String from, Serializable value)‏ { if (value instanceof MoveQuery) { MoveQuery query = (MoveQuery) value; MoveResult result = _game.move(query, getJid()); _broker.sendQueryResult(id, from, to, result); return true; ... Code sample: SudokuAvatar

  22. BAM API • void sendMessage(String to, String from, Serializable value)‏ • boolean sendQueryGet(long id, String to, String from, Serializable query)‏ • boolean sendQuerySet(long id, String to, String from, Serializable query)‏

  23. Address space • Agent names look like email addresses: • sudoku@caucho.com/3 • First component: service name (sudoku)‏ • Second component: domain (caucho.com)‏ • Third component: instance identifier (/3)‏ • Address structure reflects lightweight nature of agents

  24. Hessian Message Transfer Protocol(HMTP)‏ • Wire protocol on which BAM is based • Uses Hessian for compact serialization • Evolved from XMPP (Jabber)‏

  25. Target platforms • Flash/Flex • Silverlight • JavaFX • Java Applets • Comet (interim)‏ • Java • Quercus (PHP)‏ • .NET

  26. Conclusion • Interactive applications will become more common • HTTP is not sufficient to handle them • BAM outlines a new architecture and API to make the development of these applications easier

  27. What's next? • Technical • Convenience functions • Making a PHP page a BAM service • HMTP standardization • Promotional • Game contest

  28. Thank you! • Questions? • Comments?

  29. More information • http://hessian.caucho.com/ • http://blog.caucho.com /

  30. Appendix: Bridging BAM and Comet • Initial Comet request creates agent • Agent triggers event to client on messages • On AJAX requests, pull agent name from session

More Related