Use-cases for sockets API on the web

Owen Campbell-Moore, one of Chrome's PM's for Progressive Web Apps and new APIs asked the following question, and instantly Surma (that is the only name we know for him) said "Sockets"

I also threw in my two pennies, and Marcos Ceres asked for use-cases.

So here is a list of Apps that people have told me they want to build to host inside a browser. It includes client apps but also Services and Servers.

Outgoing connections

The TL;DR is anything normally has to proxy and convert web requests via a web server to another host.

  • E-mail client connecting directly to IMAP server, POP3, SMTP without a HTTP/WebSocket bridge
  • SSH client - to connect to a server without relay
  • RDP client
  • IRC client - again to connect directly
  • FTP client (and other file transfer clients)
  • Video Streaming client - connect directly to RTMP server.
  • BitTorrent client (needs incoming data too)
  • XMPP Client
  • Connect to Bitcoin/Blockchain server
  • Multicast client (and server) to stream video to everyone on the Network
  • MDNS Discovery service to discover local devices
  • Connect to discovered device (such as wifi speakers) and configure (via @annevk)
  • Connect to a time server
  • Direct connect to MQTT server.
  • ADB over Wifi - Someone wanted to use Cyanogen's way of debugging their Android device and connecting to it
  • Connect to DNS service and query it, was to be used for verifying that a record had been set to prove ownership
  • Many games that have multiplayer.

Incoming connections

Mostly the TL;DR here is, a server for everything in the above list.

  • IRC server
  • BitTorrent client
  • HTTP Server for simple local testing.
  • HTTP Server to host electron style apps (where the server and client are distinct)
  • SMTP service (yes - people have asked me that they want to host this in the browser)

If you have any other examples let me know and I can include them here.

About Me: Paul Kinlan

I lead the Chrome Developer Relations team at Google.

We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.

Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on web.dev, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.