# Awesome JavaScript Network

> A 🎩 list of network layer resources written pure JS.

## High level

> Based, at least, in a CLI interface.

- airpaste – 1-1 network pipe that auto discovers other peers using mdns.
- blecat – 1-1 pipe over bluetooth low energy.
- deejay – Music player that broadcasts to everyone on the same network.
- dhtkv – CLI for storing arbitrary key/value data in the bittorrent mainline DHT.
- gun – A realtime, decentralized, offline-first, graph database engine.
- hyperpipe – Distributed input/output pipe.
- hypervision – P2P Television.
- instant.io – Streaming file transfer over WebTorrent.
- ipp-printer – Create a printer on your network.
- peercast – Like peerflix but for Chromecast.
- peerflix – Streaming torrent client.
- peervisionary – Stream p2p content over your local network.
- peerwiki – browse all of wikipedia using bittorrent.
- screencat – WebRTC screensharing app.
- signalhub – Simple signalling server that can be used to coordinate handshaking with webrtc or other fun stuff.
- torrent-mount – Mount a torrent (or magnet link) as a filesystem in real time using torrent-stream and fuse.
- webcat – pipe across the web using WebRTC.
- websocketd – Turn any program that uses stdin/stdout into a WebSocket server.
- webtorrent – BitTorrent over WebRTC.
- wifi-triangulate – Finds your current position on planet earth using the wifi access point.

## Modules

> Do one thing well.

- airplay-server – A low level AirPlay server.
- castnow – simple chromecast player.
- discovery-swarm – A network swarm that uses discovery-channel to find peers. Also check webrtc-swarm.
- dns-packet – Abstract-encoding compliant module for encoding / decoding DNS packets. Also see dns-socket.
- etcdjs – Low level etcd v2 client written in Javascript with failover support.
- geocode-wifi – Get yours latitude/longitude based on your wifi access point.
- hash-to-port – Hash a value to a valid port.
- hyperdb – Distributed scalable database.
- ip-packet – Encode/decode raw ip packets.
- magnet-uri – Parse a magnet URI and return an object of keys/values.
- mutex-server - Critical section controllers, like mutex and semaphore, in the network level.
- network-address – Get the local network address of your machine.
- network-simulator – Simulate a low-level computer network.
- rtsp-stream - A transport agnostic RTSP serial multiplexer module for Node.
- simple-peer – Simple WebRTC video/voice and data channels.
- simple-websocket – Simple, EventEmitter API for WebSockets.
- torrent-discovery – Discover BitTorrent and WebTorrent peers.
- torrent-stream – The low level streaming torrent engine that peerflix uses.
- udp-packet – Encode/decode raw udp packets.
- rpc-websockets - JSON-RPC 2.0 implementation over WebSockets for Node.js and JavaScript.

## Protocols

> Implementation of protocols specs in pure javascript.

- airswarm – Network swarm that automagically discovers other peers on the network using multicast dns.
- bittorrent-dht – BitTorrent DHT protocol implementation.
- bittorrent-protocol – BitTorrent peer wire protocol implementation.
- bittorrent-tracker – BitTorrent tracker (client & server) implementation
- bonjour – A Bonjour/Zeroconf protocol implementation.
- castv2 – An implementation of the Chromecast CASTV2 protocol.
- dht-rpc – Make RPC calls over a Kademlia based DHT.
- dns-discovery – Discovery peers in a distributed system using regular dns and multicast dns.
- hypercore – A p2p network for distributing and replicating static feeds of binary data.
- ipfs – The InterPlanetary File System, a new peer-to-peer hypermedia protocol.
- k-bucket – Kademlia DHT K-bucket implementation as a binary tree.
- k-rpc – Implementation of the k-rpc protocol used the BitTorrent DHT. Also see k-rpc-socket.
- mdns – mdns/zeroconf/bonjour service discovery.
- multicast-dns – Low level multicast-dns implementation.
- peervision – Live p2p streaming protocol.
- polo – A zero configuration service discovery module.
- rtsp-server – A low level module for creating RTSP servers.
- utp-native – micro transport protocol, a network protocol similar to tcp that runs on top of udp.