Text

{  
   "data": [  
      {  
         "restaurant_id": "5",
         "name":"El Farolito",
         "phone":"415 580 1405",
         "email":"el.farolito@gmail.com",
         "floorplan":"fasdfasdfasdfasdfasdfasdfadsf",
         "description":"One of the best Mexican restaurants in San Francisco"
      }
   ]
}
{  
   "data": [  
      {  
         "restaurant_id": "5",
         "name":"El Farolito",
         "phone":"415 580 1405",
         "email":"el.farolito@gmail.com",
         "floorplan":"fasdfasdfasdfasdfasdfasdfadsf",
         "description":"One of the best Mexican restaurants in San Francisco"
      },
      {  
         "restaurant_id": "6",
         "name":"Shanghai Dumpling King",
         "phone":"415 570 1405",
         "email":"dumplings@gmail.com",
         "floorplan":"fasdfasdfasdfasdfasdfasdfadsf",
         "description":"Chinese restaurant in SF"
      },
      {  
         "restaurant_id": "7",
         "name":"Grinders Pizzeria",
         "phone":"415 560 1405",
         "email":"grinders@gmail.com",
         "floorplan":"fasdfasdfasdfasdfasdfasdfadsf",
         "description":"This is a wonderful pizzeria"
      }
   ]
}

"The real-time web is fundamentally different from traditional web apps since there is no knowing when, or if, a response will be received."

Push notifications

Chat

Gaming

Traditional Web Apps

 

  • Stateless
  • No persistent connections
  • One-directional
  • Ajax for asynchronous updates

 

 

Difficult to build real time applications

Real Time Communication?

Long polling

  • Javascript polls the server
  • Inefficient

Plugins & extensions

  • Install required
  • Inefficient
  • Security concerns

Websockets & WebRTC

Socket.IO

Let's talk about horrible browser support

Let's talk about some other downsides

Websockets

  • Bi-directional socket connection
  • No plugins, straight Javascript
  • TCP Socket
  • Supports HTTP/HTTPS
  • Great Browser Support

 

Code Example

//create a websocket object
var exampleSocket = new WebSocket("ws://www.example.com/socketserver");


//sending a message
exampleSocket.send("Here's some text that the server is urgently awaiting!"); 


//receiving a message
exampleSocket.onmessage = function (event) {
  console.log(event.data);
}

Libraries

  • Create rooms
  • Handle sessions
  • broadcast messages
  • Fallbacks for older browsers
  • Streamlined API's

 

Don't want to write a server?

WebRTC

  • Web Real Time Communication
  • Uses UDP
  • Unreliable Stream
  • Extremely fast, but potential data loss
  • Peer to Peer

WebRTC Visualized

Use Cases

  • Real Time Gaming
  • VOIP Calls
  • Video Conferencing
  • Music Streaming

 

But...

  • low level compared to websockets
  • Still very early
  • Experimental
  • Only supported in Chrome and Firefox

Conclusion

Protocol TCP (reliable) UDP (unreliable)
Connection Type Peer To Peer Client/Server
Browser Support All Major Firefox/Chrome
Speed Slower Very fast

QUESTIONS?

Websockets

By Jens Vanderhaeghe

Websockets

  • 807