A curated list of Websocket libraries and resources.
Switch branches/tags
Nothing to show
Clone or download

README.md

Awesome WebSockets Awesome

A curated list of WebSockets related principles and technologies.

WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011, and the WebSocket API in Web IDL is being standardized by the W3C.

Contents

Tools per Language

Agnostic

  • Websocketd - WebSockets the UNIX way - Full duplex messaging between web browsers and servers.
  • Nchan - Nchan is a scalable, flexible pub/sub server for the modern web, built as a module for the Nginx web server.
  • Apache-websocket - Apache WebSocket module.

C

  • Libwebsockets - It's a lightweight pure C library built to use minimal CPU and memory resources, and provide fast throughput in both directions as client or server.
  • Libwebsock - C library for easy WebSockets server.
  • Websocket - Websocket server written in C.
  • facil.io - A server/framework library for web applications, including Websockets and native pub/sub.
  • libuwsc - A Lightweight and fully asynchronous WebSocket client C library based on libubox for Embedded Linux.
  • mongoose - Mongoose Embedded Web Server Library - Mongoose is more than an embedded webserver. It is a multi-protocol embedded networking library with functions including TCP, HTTP client and server, WebSocket client and server, MQTT client and broker and much more.

C++

  • Websocketpp - C++ Websocket client/server library.
  • QtWebSockets - The QtWebSockets module is an add-on for the Qt5 library.
  • Beast - HTTP and WebSocket built on Boost.Asio in C++11.
  • µWebSockets - Highly scalable WebSocket server & client library.
  • Simple-WebSocket-Server - A very simple, fast, multithreaded, platform independent WebSocket (WS) and WebSocket Secure (WSS) server and client library implemented using C++11, Boost.Asio and OpenSSL.
  • UEWebsocket - Unreal engine 4 websocket plugin for both c++ and blueprint developer.
  • IXWebSocket - Lightweight C++11 multi-threaded client library with TLS support.

C#

  • ASP.NET SignalR - Incredibly simple real-time web for .NET.
  • WebSocketListener - Lightweight and highly scalable asynchronous WebSocket server for .NET/Mono.
  • websocket-rpc - WebSocket RPC library for .NET with auto JavaScript client code generation, supporting ASP.NET Core.
  • NetGain - A high performance websocket server library powering Stack Overflow.
  • websocket-manager - Real-Time library for ASP .NET Core.
  • WebSockets - Implementation of the WebSocket protocol, along with client and server integration components.

Erlang

  • Sockjs-erlang - WebSocket emulation - Erlang server.
  • Cowboy - Small, fast, modular HTTP server written in Erlang.
  • Bullet - Simple, reliable, efficient streaming for Cowboy.
  • Kraken - Distributed Pubsub Server for Realtime Apps.

Go

  • Gorilla Websocket - WebSocket implementation for Go.
  • Websocket - Package Websocket implements a client and server for the WebSocket protocol as specified in RFC 6455.
  • Ws - Tiny WebSocket library for Go.

Java VM

Clojure

  • Sente - Realtime web comms for Clojure/Script.
  • Chord - Library designed to bridge the gap between the triad of CLJ/CLJS, web-sockets and core.async.
  • Luminusweb - Luminus is a Clojure micro-framework based on a set of lightweight libraries.

Java

  • Project Tyrus - JSR 356: Java API for WebSocket - Reference Implementation.
  • Java-WebSocket - Barebones WebSocket client and server implementation written in 100% Java.
  • Atmosphere - Realtime Client Server Framework for the JVM, supporting WebSockets with Cross-Browser Fallbacks.
  • Webbit - Java event based WebSocket and HTTP server.

Kotlin

  • Scarlet - Tinder's Retrofit inspired WebSocket client for Kotlin, Java, and Android

Scala

  • Play - The high velocity web framework for Java and Scala.
  • Finagle-websocket - Finagle Websocket clients and servers.

Node.js

  • Socket.IO - Featuring the fastest and most reliable real-time engine.
  • Nodejs-websocket - Node.js module for websocket server and client.
  • WebSocket-Node - WebSocket Implementation for Node.JS (Draft -08 through the final RFC 6455).
  • Sockjs-node - WebSocket emulation - Node.js server.
  • Ws - ws: The fastest cross platform RFC-6455 WebSocket implementation for Node.js.
  • deepstream.io - Open realtime server a fast, secure and scalable realtime server for mobile, web & iot.
  • websocket-as-promised - Promise-based W3C WebSocket wrapper: allows to use promises when connecting, disconnecting and messaging with WebSocket server.
  • faye-websocket-node - Standards-compliant WebSocket client and server.
  • ws-wrapper - Lightweight WebSocket wrapper that provides a socket.io-like event-handler API along with Promise-based requests.
  • ws-server-wrapper - Companion library for ws-wrapper for the server-side.
  • uws - Tiny WebSockets (access to the C++ library, µWebSockets, via Node.js)
  • netflux - JavaScript client and server side transport API based on WebRTC & WebSocket

Perl

PHP

  • Ratchet - Ratchet is a loosely coupled PHP library providing developers with tools to create real time, bi-directional applications between clients and servers over WebSockets.
  • Php-websocket - Simple PHP WebSocket implementation for PHP 5.3.
  • Phpws - PHP Web Socket server.
  • Sandstone - Microframework to build a real time Rest API.

Python

  • Websockets - Websockets is a library for developing WebSocket servers and clients in Python.
  • Ws4py - WebSocket package for Python.
  • Autobahn.ws - Open-source real-time framework for Web, Mobile & Internet of Things.
  • Tornado - Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.

Ruby

  • AnyCable - Polyglot replacement for Ruby WebSocket servers with Action Cable protocol.
  • Em-websocket - EventMachine based WebSocket server.
  • Faye-websocket-ruby - Standards-compliant WebSocket client and server.
  • Iodine - WebSocket/HTTP server with integrated pub/sub and optional Redis support.
  • Websocket-driver-ruby - WebSocket protocol handler with pluggable I/O.
  • Websocket-ruby - Universal Ruby library to handle WebSocket protocol.
  • Scorched - Light-weight web framework for Ruby.
  • Firehose - Build realtime Ruby web applications. Created by the fine folks at Poll Everywhere.
  • Slanger - Open Pusher implementation compatible with Pusher libraries.
  • render_sync - Real-time Rails Partials.
  • websocket-rails - Plug and play websocket support for ruby on rails.

Protocols and APIs

Command-Line Interface (CLI) Tools

  • claws - Awesome WebSocket Client - an interactive command line client for testing websocket servers.
  • wscat - WebSocket cat.
  • wsta - A CLI development tool for WebSocket APIs.
  • ws - websocket command line tool.
  • wssh - wssh ("wish") is a command-line utility/shell for WebSocket inspired by netcat.
  • wsc - A tiny command line websocket client written in Go.
  • ws-cli - WebSocket Command Line Client written in Go.
  • ws-tool - A Develop Tool to Test WebSocket, Socket.IO, Stomp, Bayeux, HTTP, TCP, UDP, WebRTC, DNS API.

Real Life Stories

Security

  • WebSockets - An Introduction - The problems and some security implications of websockets - Cross-site WebSockets Scripting (XSWS).
  • Hacking with WebSockets - Talk on Blackhat USA 2012 Conference.
  • Testing WebSockets - This article is part of the new OWASP Testing Guide v4.
  • Websockets Auth - Journey into WebSockets Authentication/Authorization.
  • WebSocket Security - The WebSocket protocol is a young technology, and brings with it some risks. Decades of experience have taught the web community some best practices around HTTP security, but the security best practices in the WebSocket world aren’t firmly established, and continue to evolve. Nevertheless, some themes have emerged and they are described in this article.

Theory

Articles & Papers

Talks

Tutorials

Books

Sites

License

CC0

Contributing

Please, read the Contribution Guidelines before submitting your suggestion.

Feel free to open an issue or create a pull request with your additions.

Thanks!

Acknowledgments

Table of contents generated with DocToc