From ffae917f8631d9f4ca41e9fff6b53911141d261a Mon Sep 17 00:00:00 2001 From: Garry O'Donnell Date: Sun, 26 Mar 2023 22:29:01 +0100 Subject: [PATCH 1/9] Add how it works image to readme --- README.md | 5 ++++- images/connection.dark.excalidraw.svg | 16 ++++++++++++++++ images/connection.light.excalidraw.svg | 16 ++++++++++++++++ matchbox_logo.png => images/matchbox_logo.png | Bin 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 images/connection.dark.excalidraw.svg create mode 100644 images/connection.light.excalidraw.svg rename matchbox_logo.png => images/matchbox_logo.png (100%) diff --git a/README.md b/README.md index e1fe15d4..2f1fcbff 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# [![Matchbox](matchbox_logo.png)](https://github.com/johanhelsing/matchbox) +# [![Matchbox](images/matchbox_logo.png)](https://github.com/johanhelsing/matchbox) [![crates.io](https://img.shields.io/crates/v/matchbox_socket.svg)](https://crates.io/crates/matchbox_socket) ![MIT/Apache 2.0](https://img.shields.io/badge/license-MIT%2FApache-blue.svg) @@ -29,6 +29,9 @@ The Matchbox project contains: ## How it works +![Connection](images/connection.light.excalidraw.svg#gh-light-mode-only) +![Connection](images/connection.dark.excalidraw.svg#gh-dark-mode-only) + WebRTC allows direct connections between peers, but in order to establish those connections, some kind of signaling service is needed. `matchbox_server` is such a service. Once the connections are established, however, data will flow directly between peers, and no traffic will go through the signaling server. The signaling service needs to run somewhere all clients can reach it over http or https connections. In production, this usually means the public internet. diff --git a/images/connection.dark.excalidraw.svg b/images/connection.dark.excalidraw.svg new file mode 100644 index 00000000..b28a3e4e --- /dev/null +++ b/images/connection.dark.excalidraw.svg @@ -0,0 +1,16 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bWXfayFx1MDAxMn7Pr+D4vlx1MDAwNk3vS968bzdeglx1MDAxZC935sxcdTAwMTEgQIOQMFx1MDAxMrGdOfnvU5JttYRcdTAwMDRcYlx1MDAxYjN2bnjwgVa3utRd3/dVVct/f6jV1qL7obP2qbbm3LVsz22P7Nu1j3H7N2dcdTAwMTS6gVx1MDAwZpdI8jtcZsajVtKzXHUwMDE3RcPw02+/mVx1MDAxMVYrXHUwMDE4PIxyPGfg+FFcYv3+XHUwMDA3v2u1v5O/mXlGTiuy/a7nJFx1MDAwM5JLmamkmmw9XG78ZFqCXHRRSFCZdnDDLZguctpwtWN7oWOuxE1rl1dEXHUwMDA0V1x1MDAxN9dRXHUwMDE4NIeBuL/Y3rk+NLN2XFzPa0T33sMz2a3eeJSxKYxGQd+5cNtR72lcdDLt6bgwgFx1MDAxNTCjRsG42/OdMMyNXHSGdsuN7qFcciOUtj4swqeaabmDX4rw9Hc8giBiZZpcdTAwMWWm31xmvGBcdTAwMTRP/1x1MDAxZsqozZAxoGm3+l2wwm+bPi2nzdq26XP7+FCY0rSt57jdXlx1MDAxNDfizGROsracIc1cdJU4vVx1MDAxMM8w3G8nu/xH9uH99uPDP2272Xj62PLD2Fx1MDAxYfffnnSYrNPkXHUwMDFjJ3LuovQhMtssh/tcdTAwMWLrXHUwMDA3O6x7tLV5XHUwMDEwdJS9Q+vBWtrvx8fy2z5cZlx1MDAxZdzvnVxc3anh3mFA8U3rtHl0fE7yszzNb49GwW3V+971/cPGt1x1MDAxYil2T/Y6p/bGWbNx21/Cfb/uXFzv3VxyxiO+413998A7c7eOTvwl3Pdq/1x1MDAwYjmS11x1MDAxYqf9+v6+/UWEp6f2VbX7Pn4zfjBcdTAwMWW27Vx1MDAwN1RiIbVcdTAwMTJcdTAwMWNcdTAwMTPMtE6ve67fh4v+2PNMW9DqXHUwMDFiIH/IXHUwMDE4XFwgkJxcdTAwMWZkuVx1MDAwM4tp3IEpZ5gxhI1cdTAwMTHzyKPcq55FXHUwMDFleKK9XG55mDFcdTAwMGKRXHUwMDA3Y5bkXGJxylx1MDAxMJdcdTAwMDJcdTAwMWKuTKiExldfRCVKKEeLXCKVaGrBXHUwMDBlK02xUkxcbm52XCIlXHUwMDE2bkx95Fx1MDAxNazAMyhG3OzKfGLJec0kg+Quvtxccs1uXHUwMDA3ftRwvycyhHKtO/bA9e5zXHUwMDFilvgnLFbD7fq2XHUwMDA3s3Rrv/tccmdcdTAwMDQ+uZbrtO5Bj7hnXHUwMDBizM9ehJ6RXHUwMDBi2pp2XHUwMDE4uO12VjBbMLPt+s5ov4rQXHUwMDA1I7frgilnRcMmzYJGZy+VXHUwMDAyXHUwMDEwnplInCnllJBpcJRSXHRBaUbW5qHx+/k2q6Mvgoa7O+7RzmiX9/ubb13KXHUwMDA10lZezFx1MDAxOefWv6vlXHUwMDAwOCmp1oIvgLlcdTAwMTWK+Xb/XHUwMDAwN8ak45z21teb352D9ni7+bOKeVx1MDAxNF19lVtcbn9cdTAwMWWEftTabDb/7Iz5+1x1MDAxMl1K6DSUK6Qo0yBElVFevvlvXFxzXHUwMDA1xZaCboxSeFxcwHxcdTAwMGXxIMYvRPw0yVXKolJrXHUwMDAwPkVIKkyK+CdF+CtEidRcdTAwMWPJXHUwMDA14P9cdTAwMDLJpZrpTDDw6pJcdTAwMWLfK6qtv5LOzlGhgs5cdTAwMTasWaa8Zlx1MDAxMuFcdOAxJFx1MDAxMYHgj1ZcdTAwMDZes3659/lY3Trnw93uXHJcdTAwMTlcZrztceetyytcdTAwMDSObFJfmfyX9VVgRoRSZJGQdpW58tlcdTAwMTA11vW1pKG38Zfi423n5GBcdTAwMDVy9Sunfaa8Mj5ccuVaUqFcdTAwMTnwefWUtnTz37i8YiSFXHUwMDA13Vx1MDAxMGOEI6ZcdTAwMTTNI16T19JXbYG8alx1MDAxY28zgtSZVdJXJKhcdTAwMDZcdTAwMGbJREWvrK9aZ6xYkb5uvJK+zpGhKfq6sai+VklcdTAwMTYmmCFcdTAwMWbxcWGhzFx1MDAwN+c9ksmCL2FRXHUwMDE2nWWgW/T9ZYjXUnS7bYc955nC/Vx1MDAxY+0jXHUwMDA17XvCllx1MDAxNphcdTAwMTOBUCHjiFddssnWJ6KkhFx1MDAxMFx1MDAwNORRhShXVVBcdTAwMWFcdTAwMDbupI6bbzXjXHUwMDA2yY/0+1x1MDAxZlx1MDAxZkt7m9A//tSxXHUwMDEwc0eI/Fx1MDAxMHBFM6SgfZ5cdTAwMWRGm8Fg4Ebw9Cex5ZNPXHUwMDE5RvYo2nD9tut385v6eFx1MDAxZVQlfk7opzWOV6WOLMpcdTAwMTFXXGZcdTAwMTEgfUUxxpleXXtcdTAwMTjzs8VcdTAwMGKe4vjt+VbMrpZlrEBcdTAwMTZcdTAwMDNcdTAwMTOoXHUwMDEwWnDFXHUwMDA10Vx1MDAwNtmpXHUwMDE1wtKZj1KiYFOyNusxi/RcdTAwMWO7PblyYHH2WjZcdTAwMTApp63ZtYhZtKWwOVtLysHKXHUwMDEwV0pUpKRyi4Xx8V9EVYWoXHUwMDE4XHUwMDEzsGjSLFvmlIJNLZhgiHE0lpJVOeJ8l0xVx4RlXHUwMDA3XHUwMDEwVWGEyI6AZV1cdTAwMDVTVeZcYmAqJFx1MDAxOFx1MDAxNlxu1pdcdIE1MShLSUI+j6gq0yWyXGJhXGZjijlVknFzzJWawEvYcsnMNDs9nMVMklx1MDAxOdZJimbYYOSJmSgqScCN5r9hXnpB4WPZ8Vx1MDAxM8dcdTAwMTK4qSx+wlx1MDAwMk+2prREpFx1MDAwMNyqTI+fjJYyvlx1MDAxNX/q7E1cdTAwMDVDwDCYK4g+NJVcdTAwMTRcIlxmrYrwps9ccoZmp1xcXHUwMDEzRMdcdFx1MDAwMVx1MDAxM4imVFx1MDAxMVx0me7zWGaSXHUwMDAxXHUwMDE2Jpr1nbvN3d7WzfH38d79waF9fkmPXHUwMDA3RaLJ11SSXGKI5iMglnnbyERAzFx1MDAwMpQozinwudSZ2Kcs7/9/5Z28xz9cdTAwMTBcZuNES1x1MDAwNSpUwi/gMVP5JY7ykUC6ystcdTAwMTmr4penilx1MDAwN7Vqn+GJ7W5cZiOzP4tcdTAwMTZP0lxuiOd08oW+fIEkXG6G06ojOasnSyHlZi5SXHUwMDBl2bZPXHUwMDFiX/9cdTAwMWGcXbS3yPn+7kX94lx1MDAxMFx1MDAxNrhcdTAwMDKoOKNcdTAwMTaSXHUwMDA0tl5cdTAwMTClmMq/c0IpskTMXHUwMDFiXFwqgFx1MDAxYiNcdTAwMDXAaW0pXG6Zk4bcnlxuiUvwxotFQmFcdTAwMTGBID1cdTAwMTNcYjxcdTAwMDfC7eVW/d8n/lx1MDAxNOVcbjhaXHUwMDE0XHUwMDBlhuIllNP1nSOklcSiykHtqvGHrdpxp+OMfvf3bL9cdTAwMWT27L7zhmE409pF0Dj7SGRWLK1cdTAwMDXLXHUwMDAxkNBiLI1cdTAwMTUvgoygd6FqbybL51JcIlxyXHRXaZKPpr/GjOJ8UbGft1x1MDAxYSlywTQhc1x1MDAwN1x1MDAxOG9MXHUwMDA2IG5GvF74vUiGz+P3OjhcdTAwMTNcdTAwMTSETFx1MDAxNNP7Ys1vuaE3spjGXHUwMDE4JFRroSSVpFhcZtWvn97PPk2dRUk4i8GHI1x1MDAxMvPbXHUwMDFjsJdwUjYr/cVJ8zmJsOT8kZZm+NNcdTAwMGKPXHUwMDE0Q1xmoCu9L/IuKamOczXEOmZcdTAwMTXqjpTnx1xivFxuWlokXHUwMDFmj4uNXFxyXHUwMDEwIcIlVTJzpvNUeFxcwVx1MDAxOVx0lpRwzJVmoGtAUsWqQLH8uTRqmvv+hJz6/lx1MDAwNOOxXHUwMDEyI1X9/Ynj7fD+z+aec1x1MDAxOTY6N3Z3cL3Xulx1MDAxY7+dpCElSFx1MDAwYiFcIiEl45CVKaJcdTAwMTBcdTAwMTPK1FeTXHUwMDE4USlcdTAwMGLSLYaw0FRqlI9cdTAwMTgpY1x1MDAxNs6kbJPveiznharF0r60hMkxSLFY5D+R3s8/XGZcdTAwMTCrtt5qOcOoNH1YRf4y24IpXHTMh0dcIlxcs4fDRlx1MDAwNCuY8sraN9e53Shxik7yiSGdXHUwMDAwOoaOk0jdj1x1MDAwZj/+XHUwMDAx8T61nyJ9 + + + + Signalling ServerSocket ASocket B3. Messaging1. OfferHandshake2. AcceptHandshake \ No newline at end of file diff --git a/images/connection.light.excalidraw.svg b/images/connection.light.excalidraw.svg new file mode 100644 index 00000000..038c1391 --- /dev/null +++ b/images/connection.light.excalidraw.svg @@ -0,0 +1,16 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bWXfayFx1MDAxMn7Pr+D4vlx1MDAwNk3vS968bzdeglx1MDAxZC935sxcdTAwMTEgQIOQMFx1MDAxMrGdOfnvU5JttYRcdTAwMDRcYlx1MDAxYjN2bnjwgVa3utRd3/dVVct/f6jV1qL7obP2qbbm3LVsz22P7Nu1j3H7N2dcdTAwMTS6gVx1MDAwZpdI8jtcZsajVtKzXHUwMDE3RcPw02+/mVx1MDAxMVYrXHUwMDE4PIxyPGfg+FFcYv3+XHUwMDA3v2u1v5O/mXlGTiuy/a7nJFx1MDAwM5JLmamkmmw9XG78ZFqCXHRRSFCZdnDDLZguctpwtWN7oWOuxE1rl1dEXHUwMDA0V1x1MDAxN9dRXHUwMDE4NIeBuL/Y3rk+NLN2XFzPa0T33sMz2a3eeJSxKYxGQd+5cNtR72lcdDLt6bgwgFx1MDAxNTCjRsG42/OdMMyNXHSGdsuN7qFcciOUtj4swqeaabmDX4rw9Hc8giBiZZpcdTAwMWWm31xmvGBcdTAwMTRP/1x1MDAxZsqozZAxoGm3+l2wwm+bPi2nzdq26XP7+FCY0rSt57jdXlx1MDAxNDfizGROsracIc1cdJU4vVx1MDAxMM8w3G8nu/xH9uH99uPDP2272Xj62PLD2Fx1MDAxYfffnnSYrNPkXHUwMDFjJ3LuovQhMtssh/tcdTAwMWLrXHUwMDA3O6x7tLV5XHUwMDEwdJS9Q+vBWtrvx8fy2z5cZlx1MDAxZdzvnVxc3anh3mFA8U3rtHl0fE7yszzNb49GwW3V+971/cPGt1x1MDAxYil2T/Y6p/bGWbNx21/Cfb/uXFzv3VxyxiO+413998A7c7eOTvwl3Pdq/1x1MDAwYjmS11x1MDAxYqf9+v6+/UWEp6f2VbX7Pn4zfjBcdTAwMWW27Vx1MDAwN1RiIbVcdTAwMTJcdTAwMWNcdTAwMTPMtE6ve67fh4v+2PNMW9DqXHUwMDFiIH/IXHUwMDE4XFwgkJxcdTAwMWZkuVx1MDAwM4tp3IEpZ5gxhI1cdTAwMTHzyKPcq55FXHUwMDFleKK9XG55mDFcdTAwMGKRXHUwMDA3Y5bkXGJxylx1MDAxMJdcdTAwMDJcdTAwMWKuTKiExldfRCVKKEeLXCKVaGrBXHUwMDBlK02xUkxcbm52XCIlXHUwMDE2bkx95Fx1MDAxNazAMyhG3OzKfGLJec0kg+Quvtxccs1uXHUwMDA3ftRwvycyhHKtO/bA9e5zXHUwMDFilvgnLFbD7fq2XHUwMDA3s3Rrv/tccmdcdTAwMDQ+uZbrtO5Bj7hnXHUwMDBizM9ehJ6RXHUwMDBi2pp2XHUwMDE4uO12VjBbMLPt+s5ov4rQXHUwMDA1I7frgilnRcMmzYJGZy+VXHUwMDAyXHUwMDEwnplInCnllJBpcJRSXHRBaUbW5qHx+/k2q6Mvgoa7O+7RzmiX9/ubb13KXHUwMDA10lZezFx1MDAxOefWv6vlXHUwMDAwOCmp1oIvgLlcdTAwMTWK+Xb/XHUwMDAwN8ak45z21teb352D9ni7+bOKeVx1MDAxNF19lVtcbn9cdTAwMWWEftTabDb/7Iz5+1x1MDAxMl1K6DSUK6Qo0yBElVFevvlvXFxzXHUwMDA1xZaCboxSeFxcwHxcdTAwMGXxIMYvRPw0yVXKolJrXHUwMDAwPkVIKkyK+CdF+CtEidRcdTAwMWPJXHUwMDA14P9cdTAwMDLJpZrpTDDw6pJcdTAwMWLfK6qtv5LOzlGhgs5cdTAwMTasWaa8Zlx1MDAxMuFcdOAxJFx1MDAxMYHgj1ZcdTAwMDZes3659/lY3Trnw93uXHJcdTAwMTlcZrztceetyytcdTAwMDSObFJfmfyX9VVgRoRSZJGQdpW58tlcdTAwMTA11vW1pKG38Zfi423n5GBcdTAwMDVy9Sunfaa8Mj5ccuVaUqFcdTAwMTnwefWUtnTz37i8YiSFXHUwMDA13Vx1MDAxMGOEI6ZcdTAwMTTNI16T19JXbYG8alx1MDAxY28zgtSZVdJXJKhcdTAwMDZcdTAwMGbJREWvrK9aZ6xYkb5uvJK+zpGhKfq6sai+VklcdTAwMTYmmCFcdTAwMWbxcWGhzFx1MDAwN+c9ksmCL2FRXHUwMDE2nWWgW/T9ZYjXUnS7bYc955nC/Vx1MDAxY+0jXHUwMDA17XvCllx1MDAxNphcdTAwMTOBUCHjiFddssnWJ6KkhFx1MDAxMFx1MDAwNORRhShXVVBcdTAwMWFcdTAwMDbupI6bbzXjXHUwMDA2yY/0+1x1MDAxZlx1MDAxZkt7m9A//tSxXHUwMDEwc0eI/Fx1MDAxMHBFM6SgfZ5cdTAwMWRGm8Fg4Ebw9Cex5ZNPXHUwMDE5RvYo2nD9tut385v6eFx1MDAxZVQlfk7opzWOV6WOLMpcdTAwMTFXXGZcdTAwMTEgfUUxxpleXXtcdTAwMTjzs8VcdTAwMGKe4vjt+VbMrpZlrEBcdTAwMTZcdTAwMDNcdTAwMTOoXHUwMDEwWnDFXHUwMDA10Vx1MDAwNtmpXHUwMDE1wtKZj1KiYFOyNusxi/RcdTAwMWO7PblyYHH2WjZcdTAwMTApp63ZtYhZtKWwOVtLysHKXHUwMDEwV0pUpKRyi4Xx8V9EVYWoXHUwMDE4XHUwMDEzsGjSLFvmlIJNLZhgiHE0lpJVOeJ8l0xVx4RlXHUwMDA3XHUwMDEwVWGEyI6AZV1cdTAwMDVTVeZcYmAqJFx1MDAxOFx1MDAxNlxu1pdcdIE1MShLSUI+j6gq0yWyXGJhXGZjijlVknFzzJWawEvYcsnMNDs9nMVMklx1MDAxOdZJimbYYOSJmSgqScCN5r9hXnpB4WPZ8Vx1MDAxM8dcdTAwMTK4qSx+wlx1MDAwMk+2prREpFx1MDAwMNyqTI+fjJYyvlx1MDAxNX/q7E1cdTAwMDVDwDCYK4g+NJVcdTAwMTRcIlxmrYrwps9ccoZmp1xcXHUwMDEzRMdcdFx1MDAwMVx1MDAxM4imVFx1MDAxMVx0me7zWGaSXHUwMDAxXHUwMDE2Jpr1nbvN3d7WzfH38d79waF9fkmPXHUwMDA3RaLJ11SSXGKI5iMglnnbyERAzFx1MDAwMpQozinwudSZ2Kcs7/9/5Z28xz9cdTAwMTBcZuNES1x1MDAwNSpUwi/gMVP5JY7ykUC6ystcdTAwMTmr4penilx1MDAwN7Vqn+GJ7W5cZiOzP4tcdTAwMTZP0lxuiOd08oW+fIEkXG6G06ojOasnSyHlZi5SXHUwMDBl2bZPXHUwMDFiX/9cdTAwMWGcXbS3yPn+7kX94lx1MDAxMFx1MDAxNrhcdTAwMDKoOKNcdTAwMTaSXHUwMDA0tl5cdTAwMTClmMq/c0IpskTMXHUwMDFiXFwqgFx1MDAxYiNcdTAwMDXAaW0pXG6Zk4bcnlxuiUvwxotFQmFcdTAwMTGBID1cdTAwMTNcYjxcdTAwMDfC7eVW/d8n/lx1MDAxNOVcbjhaXHUwMDE0XHUwMDBlhuIllNP1nSOklcSiykHtqvGHrdpxp+OMfvf3bL9cdTAwMWT27L7zhmE409pF0Dj7SGRWLK1cdTAwMDXLXHUwMDAxkNBiLI1cdTAwMTUvgoygd6FqbybL51JcIlxyXHRXaZKPpr/GjOJ8UbGft1x1MDAxYSlywTQhc1x1MDAwN1x1MDAxOG9MXHUwMDA2IG5GvF74vUiGz+P3OjhcdTAwMTNcdTAwMTSETFx1MDAxNNP7Ys1vuaE3spjGXHUwMDE4JFRroSSVpFhcZtWvn97PPk2dRUk4i8GHI1x1MDAxMvPbXHUwMDFjsJdwUjYr/cVJ8zmJsOT8kZZm+NNcdTAwMGKPXHUwMDE0Q1xmoCu9L/IuKamOczXEOmZcdTAwMTXqjpTnx1xivFxuWlokXHUwMDFmj4uNXFxyXHUwMDEwIcIlVTJzpvNUeFxcwVx1MDAxOVx0lpRwzJVmoGtAUsWqQLH8uTRqmvv+hJz6/lx1MDAwNOOxXHUwMDEyI1X9/Ynj7fD+z+aec1x1MDAxOTY6N3Z3cL3Xulx1MDAxY7+dpCElSFx1MDAwYiFcIiEl45CVKaJcdTAwMTBcdTAwMTPK1FeTXHUwMDE4USlcdTAwMGLSLYaw0FRqlI9cdTAwMTgpY1x1MDAxNs6kbJPveiznharF0r60hMkxSLFY5D+R3s8/XGZcdTAwMTCrtt5qOcOoNH1YRf4y24IpXHTMh0dcIlxcs4fDRlx1MDAwNCuY8sraN9e53Shxik7yiSGdXHUwMDAwOoaOk0jdj1x1MDAwZj/+XHUwMDAx8T61nyJ9 + + + + Signalling ServerSocket ASocket B3. Messaging1. OfferHandshake2. AcceptHandshake \ No newline at end of file diff --git a/matchbox_logo.png b/images/matchbox_logo.png similarity index 100% rename from matchbox_logo.png rename to images/matchbox_logo.png From 0bff81b3c1e9ca6ec2f67cad3a85487c7f6e3750 Mon Sep 17 00:00:00 2001 From: Garry O'Donnell Date: Sun, 26 Mar 2023 22:54:51 +0100 Subject: [PATCH 2/9] Update capabilities & contents --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2f1fcbff..36971a84 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,21 @@ Painless peer-to-peer WebRTC networking for rust's native and wasm applications. The goal of the Matchbox project is to enable udp-like, unordered, unreliable p2p connections in web browsers or native to facilitate low-latency multiplayer games. +| | Ordered | Unordered | +| ---------- | ------- | --------- | +| Reliable | ✓ | ✓ | +| Unreliable | ✓ | ✓ | + - [Introductory blog post](https://johanhelsing.studio/posts/introducing-matchbox) - [Tutorial for usage with Bevy and GGRS](https://johanhelsing.studio/posts/extreme-bevy) The Matchbox project contains: -- A socket abstraction, [matchbox_socket](https://github.com/johanhelsing/matchbox/tree/main/matchbox_socket) - - With a feature, `ggrs` for providing a [ggrs](https://github.com/gschup/ggrs) compatible socket. -- A tiny signaling server, [matchbox_server](https://github.com/johanhelsing/matchbox/tree/main/matchbox_server). Written in rust, uses only a couple of megabytes of memory. Also available as a docker image. Compatible with all demos. -- A signaling server API, [matchbox_signaling](https://github.com/johanhelsing/matchbox/tree/main/matchbox_signaling). For DIY signaling servers and hookable callbacks, this may be useful if you plan a complicated matchmaking procedure. +- [matchbox_socket](https://github.com/johanhelsing/matchbox/tree/main/matchbox_socket): A socket abstraction for Wasm or Native, with: + - `ggrs-socket`: A feature providing a [ggrs](https://github.com/gschup/ggrs) compatible socket. +- [bevy_matchbox](https://github.com/johanhelsing/matchbox/tree/main/bevy_matchbox): A `matchbox_socket` integration for the [Bevy](https://bevyengine.org/) game engine +- [matchbox_signaling](https://github.com/johanhelsing/matchbox/tree/main/matchbox_signaling): A signaling server library, with ready to use examples +- [matchbox_server](https://github.com/johanhelsing/matchbox/tree/main/matchbox_server): A ready to use full-mesh signalling server ## Examples From 2bb802387a9360830de5618bf0e22d5d78869079 Mon Sep 17 00:00:00 2001 From: Garry O'Donnell Date: Thu, 30 Mar 2023 20:03:13 +0100 Subject: [PATCH 3/9] Get images from github raw.githubusercontent --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 36971a84..5f7be849 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# [![Matchbox](images/matchbox_logo.png)](https://github.com/johanhelsing/matchbox) +# [![Matchbox](https://raw.githubusercontent.com/johanhelsing/matchbox/main/images/matchbox_logo.png)](https://github.com/johanhelsing/matchbox) [![crates.io](https://img.shields.io/crates/v/matchbox_socket.svg)](https://crates.io/crates/matchbox_socket) ![MIT/Apache 2.0](https://img.shields.io/badge/license-MIT%2FApache-blue.svg) @@ -35,8 +35,8 @@ The Matchbox project contains: ## How it works -![Connection](images/connection.light.excalidraw.svg#gh-light-mode-only) -![Connection](images/connection.dark.excalidraw.svg#gh-dark-mode-only) +![Connection](https://raw.githubusercontent.com/johanhelsing/matchbox/main/images/connection.light.excalidraw.svg#gh-light-mode-only) +![Connection](https://raw.githubusercontent.com/johanhelsing/matchbox/main/images/connection.dark.excalidraw.svg#gh-dark-mode-only) WebRTC allows direct connections between peers, but in order to establish those connections, some kind of signaling service is needed. `matchbox_server` is such a service. Once the connections are established, however, data will flow directly between peers, and no traffic will go through the signaling server. From 5bdaeaa7576f19ee3785c697cac0770911a9bef9 Mon Sep 17 00:00:00 2001 From: Garry O'Donnell Date: Thu, 30 Mar 2023 22:05:09 +0200 Subject: [PATCH 4/9] Add Channel to table header Co-authored-by: Spencer C. Imbleau, M.Sc. (he/him) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f7be849..5d29f8b7 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Painless peer-to-peer WebRTC networking for rust's native and wasm applications. The goal of the Matchbox project is to enable udp-like, unordered, unreliable p2p connections in web browsers or native to facilitate low-latency multiplayer games. -| | Ordered | Unordered | +| Channel | Ordered | Unordered | | ---------- | ------- | --------- | | Reliable | ✓ | ✓ | | Unreliable | ✓ | ✓ | From 3ef5a3d17018f6fb13e344dc235e72e5b013fa11 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Fri, 31 Mar 2023 07:52:57 +0200 Subject: [PATCH 5/9] fixup: ggrs feature name --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d29f8b7..752630ec 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ p2p connections in web browsers or native to facilitate low-latency multiplayer The Matchbox project contains: - [matchbox_socket](https://github.com/johanhelsing/matchbox/tree/main/matchbox_socket): A socket abstraction for Wasm or Native, with: - - `ggrs-socket`: A feature providing a [ggrs](https://github.com/gschup/ggrs) compatible socket. + - `ggrs`: A feature providing a [ggrs](https://github.com/gschup/ggrs) compatible socket. - [bevy_matchbox](https://github.com/johanhelsing/matchbox/tree/main/bevy_matchbox): A `matchbox_socket` integration for the [Bevy](https://bevyengine.org/) game engine - [matchbox_signaling](https://github.com/johanhelsing/matchbox/tree/main/matchbox_signaling): A signaling server library, with ready to use examples - [matchbox_server](https://github.com/johanhelsing/matchbox/tree/main/matchbox_server): A ready to use full-mesh signalling server From c7ad7e8f8e607dd6a6475586c8ec842d73ec6607 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Fri, 31 Mar 2023 09:02:59 +0200 Subject: [PATCH 6/9] Switch to single-theme connection diagram --- README.md | 3 +-- images/connection.dark.excalidraw.svg | 16 ---------------- images/connection.excalidraw.svg | 16 ++++++++++++++++ images/connection.light.excalidraw.svg | 16 ---------------- 4 files changed, 17 insertions(+), 34 deletions(-) delete mode 100644 images/connection.dark.excalidraw.svg create mode 100644 images/connection.excalidraw.svg delete mode 100644 images/connection.light.excalidraw.svg diff --git a/README.md b/README.md index 752630ec..e0d178d6 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,7 @@ The Matchbox project contains: ## How it works -![Connection](https://raw.githubusercontent.com/johanhelsing/matchbox/main/images/connection.light.excalidraw.svg#gh-light-mode-only) -![Connection](https://raw.githubusercontent.com/johanhelsing/matchbox/main/images/connection.dark.excalidraw.svg#gh-dark-mode-only) +![Connection](https://raw.githubusercontent.com/johanhelsing/matchbox/main/images/connection.excalidraw.svg) WebRTC allows direct connections between peers, but in order to establish those connections, some kind of signaling service is needed. `matchbox_server` is such a service. Once the connections are established, however, data will flow directly between peers, and no traffic will go through the signaling server. diff --git a/images/connection.dark.excalidraw.svg b/images/connection.dark.excalidraw.svg deleted file mode 100644 index b28a3e4e..00000000 --- a/images/connection.dark.excalidraw.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bWXfayFx1MDAxMn7Pr+D4vlx1MDAwNk3vS968bzdeglx1MDAxZC935sxcdTAwMTEgQIOQMFx1MDAxMrGdOfnvU5JttYRcdTAwMDRcYlx1MDAxYjN2bnjwgVa3utRd3/dVVct/f6jV1qL7obP2qbbm3LVsz22P7Nu1j3H7N2dcdTAwMTS6gVx1MDAwZpdI8jtcZsajVtKzXHUwMDE3RcPw02+/mVx1MDAxMVYrXHUwMDE4PIxyPGfg+FFcYv3+XHUwMDA3v2u1v5O/mXlGTiuy/a7nJFx1MDAwM5JLmamkmmw9XG78ZFqCXHRRSFCZdnDDLZguctpwtWN7oWOuxE1rl1dEXHUwMDA0V1x1MDAxN9dRXHUwMDE4NIeBuL/Y3rk+NLN2XFzPa0T33sMz2a3eeJSxKYxGQd+5cNtR72lcdDLt6bgwgFx1MDAxNTCjRsG42/OdMMyNXHSGdsuN7qFcciOUtj4swqeaabmDX4rw9Hc8giBiZZpcdTAwMWWm31xmvGBcdTAwMTRP/1x1MDAxZsqozZAxoGm3+l2wwm+bPi2nzdq26XP7+FCY0rSt57jdXlx1MDAxNDfizGROsracIc1cdJU4vVx1MDAxMM8w3G8nu/xH9uH99uPDP2272Xj62PLD2Fx1MDAxYfffnnSYrNPkXHUwMDFjJ3LuovQhMtssh/tcdTAwMWLrXHUwMDA3O6x7tLV5XHUwMDEwdJS9Q+vBWtrvx8fy2z5cZlx1MDAxZdzvnVxc3anh3mFA8U3rtHl0fE7yszzNb49GwW3V+971/cPGt1x1MDAxYil2T/Y6p/bGWbNx21/Cfb/uXFzv3VxyxiO+413998A7c7eOTvwl3Pdq/1x1MDAwYjmS11x1MDAxYqf9+v6+/UWEp6f2VbX7Pn4zfjBcdTAwMWW27Vx1MDAwN1RiIbVcdTAwMTJcdTAwMWNcdTAwMTPMtE6ve67fh4v+2PNMW9DqXHUwMDFiIH/IXHUwMDE4XFwgkJxcdTAwMWZkuVx1MDAwM4tp3IEpZ5gxhI1cdTAwMTHzyKPcq55FXHUwMDFleKK9XG55mDFcdTAwMGKRXHUwMDA3Y5bkXGJxylx1MDAxMJdcdTAwMDJcdTAwMWKuTKiExldfRCVKKEeLXCKVaGrBXHUwMDBlK02xUkxcbm52XCIlXHUwMDE2bkx95Fx1MDAxNazAMyhG3OzKfGLJec0kg+Quvtxccs1uXHUwMDA3ftRwvycyhHKtO/bA9e5zXHUwMDFilvgnLFbD7fq2XHUwMDA3s3Rrv/tccmdcdTAwMDQ+uZbrtO5Bj7hnXHUwMDBizM9ehJ6RXHUwMDBi2pp2XHUwMDE4uO12VjBbMLPt+s5ov4rQXHUwMDA1I7frgilnRcMmzYJGZy+VXHUwMDAyXHUwMDEwnplInCnllJBpcJRSXHRBaUbW5qHx+/k2q6Mvgoa7O+7RzmiX9/ubb13KXHUwMDA10lZezFx1MDAxOefWv6vlXHUwMDAwOCmp1oIvgLlcdTAwMTWK+Xb/XHUwMDAwN8ak45z21teb352D9ni7+bOKeVx1MDAxNF19lVtcbn9cdTAwMWWEftTabDb/7Iz5+1x1MDAxMl1K6DSUK6Qo0yBElVFevvlvXFxzXHUwMDA1xZaCboxSeFxcwHxcdTAwMGXxIMYvRPw0yVXKolJrXHUwMDAwPkVIKkyK+CdF+CtEidRcdTAwMWPJXHUwMDA14P9cdTAwMDLJpZrpTDDw6pJcdTAwMWLfK6qtv5LOzlGhgs5cdTAwMTasWaa8Zlx1MDAxMuFcdOAxJFx1MDAxMYHgj1ZcdTAwMDZes3659/lY3Trnw93uXHJcdTAwMTlcZrztceetyytcdTAwMDSObFJfmfyX9VVgRoRSZJGQdpW58tlcdTAwMTA11vW1pKG38Zfi423n5GBcdTAwMDVy9Sunfaa8Mj5ccuVaUqFcdTAwMTnwefWUtnTz37i8YiSFXHUwMDA13Vx1MDAxMGOEI6ZcdTAwMTTNI16T19JXbYG8alx1MDAxY28zgtSZVdJXJKhcdTAwMDZcdTAwMGbJREWvrK9aZ6xYkb5uvJK+zpGhKfq6sai+VklcdTAwMTYmmCFcdTAwMWbxcWGhzFx1MDAwN+c9ksmCL2FRXHUwMDE2nWWgW/T9ZYjXUnS7bYc955nC/Vx1MDAxY+0jXHUwMDA17XvCllx1MDAxNphcdTAwMTOBUCHjiFddssnWJ6KkhFx1MDAxMFx1MDAwNORRhShXVVBcdTAwMWFcdTAwMDbupI6bbzXjXHUwMDA2yY/0+1x1MDAxZlx1MDAxZkt7m9A//tSxXHUwMDEwc0eI/Fx1MDAxMHBFM6SgfZ5cdTAwMWRGm8Fg4Ebw9Cex5ZNPXHUwMDE5RvYo2nD9tut385v6eFx1MDAxZVQlfk7opzWOV6WOLMpcdTAwMTFXXGZcdTAwMTEgfUUxxpleXXtcdTAwMTjzs8VcdTAwMGKe4vjt+VbMrpZlrEBcdTAwMTZcdTAwMDNcdTAwMTOoXHUwMDEwWnDFXHUwMDA10Vx1MDAwNtmpXHUwMDE1wtKZj1KiYFOyNusxi/RcdTAwMWO7PblyYHH2WjZcdTAwMTApp63ZtYhZtKWwOVtLysHKXHUwMDEwV0pUpKRyi4Xx8V9EVYWoXHUwMDE4XHUwMDEzsGjSLFvmlIJNLZhgiHE0lpJVOeJ8l0xVx4RlXHUwMDA3XHUwMDEwVWGEyI6AZV1cdTAwMDVTVeZcYmAqJFx1MDAxOFx1MDAxNlxu1pdcdIE1MShLSUI+j6gq0yWyXGJhXGZjijlVknFzzJWawEvYcsnMNDs9nMVMklx1MDAxOdZJimbYYOSJmSgqScCN5r9hXnpB4WPZ8Vx1MDAxM8dcdTAwMTK4qSx+wlx1MDAwMk+2prREpFx1MDAwMNyqTI+fjJYyvlx1MDAxNX/q7E1cdTAwMDVDwDCYK4g+NJVcdTAwMTRcIlxmrYrwps9ccoZmp1xcXHUwMDEzRMdcdFx1MDAwMVx1MDAxM4imVFx1MDAxMVx0me7zWGaSXHUwMDAxXHUwMDE2Jpr1nbvN3d7WzfH38d79waF9fkmPXHUwMDA3RaLJ11SSXGKI5iMglnnbyERAzFx1MDAwMpQozinwudSZ2Kcs7/9/5Z28xz9cdTAwMTBcZuNES1x1MDAwNSpUwi/gMVP5JY7ykUC6ystcdTAwMTmr4penilx1MDAwN7Vqn+GJ7W5cZiOzP4tcdTAwMTZP0lxuiOd08oW+fIEkXG6G06ojOasnSyHlZi5SXHUwMDBl2bZPXHUwMDFiX/9cdTAwMWGcXbS3yPn+7kX94lx1MDAxMFx1MDAxNrhcdTAwMDKoOKNcdTAwMTaSXHUwMDA0tl5cdTAwMTClmMq/c0IpskTMXHUwMDFiXFwqgFx1MDAxYiNcdTAwMDXAaW0pXG6Zk4bcnlxuiUvwxotFQmFcdTAwMTGBID1cdTAwMTNcYjxcdTAwMDfC7eVW/d8n/lx1MDAxNOVcbjhaXHUwMDE0XHUwMDBlhuIllNP1nSOklcSiykHtqvGHrdpxp+OMfvf3bL9cdTAwMWT27L7zhmE409pF0Dj7SGRWLK1cdTAwMDXLXHUwMDAxkNBiLI1cdTAwMTUvgoygd6FqbybL51JcIlxyXHRXaZKPpr/GjOJ8UbGft1x1MDAxYSlywTQhc1x1MDAwN1x1MDAxOG9MXHUwMDA2IG5GvF74vUiGz+P3OjhcdTAwMTNcdTAwMTSETFx1MDAxNNP7Ys1vuaE3spjGXHUwMDE4JFRroSSVpFhcZtWvn97PPk2dRUk4i8GHI1x1MDAxMvPbXHUwMDFjsJdwUjYr/cVJ8zmJsOT8kZZm+NNcdTAwMGKPXHUwMDE0Q1xmoCu9L/IuKamOczXEOmZcdTAwMTXqjpTnx1xivFxuWlokXHUwMDFmj4uNXFxyXHUwMDEwIcIlVTJzpvNUeFxcwVx1MDAxOVx0lpRwzJVmoGtAUsWqQLH8uTRqmvv+hJz6/lx1MDAwNOOxXHUwMDEyI1X9/Ynj7fD+z+aec1x1MDAxOTY6N3Z3cL3Xulx1MDAxY7+dpCElSFx1MDAwYiFcIiEl45CVKaJcdTAwMTBcdTAwMTPK1FeTXHUwMDE4USlcdTAwMGLSLYaw0FRqlI9cdTAwMTgpY1x1MDAxNs6kbJPveiznharF0r60hMkxSLFY5D+R3s8/XGZcdTAwMTCrtt5qOcOoNH1YRf4y24IpXHTMh0dcIlxcs4fDRlx1MDAwNCuY8sraN9e53Shxik7yiSGdXHUwMDAwOoaOk0jdj1x1MDAwZj/+XHUwMDAx8T61nyJ9 - - - - Signalling ServerSocket ASocket B3. Messaging1. OfferHandshake2. AcceptHandshake \ No newline at end of file diff --git a/images/connection.excalidraw.svg b/images/connection.excalidraw.svg new file mode 100644 index 00000000..675d33df --- /dev/null +++ b/images/connection.excalidraw.svg @@ -0,0 +1,16 @@ + + + + + + + Signalling ServerSocket ASocket B3. Messaging1. OfferHandshake2. AcceptHandshake \ No newline at end of file diff --git a/images/connection.light.excalidraw.svg b/images/connection.light.excalidraw.svg deleted file mode 100644 index 038c1391..00000000 --- a/images/connection.light.excalidraw.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bWXfayFx1MDAxMn7Pr+D4vlx1MDAwNk3vS968bzdeglx1MDAxZC935sxcdTAwMTEgQIOQMFx1MDAxMrGdOfnvU5JttYRcdTAwMDRcYlx1MDAxYjN2bnjwgVa3utRd3/dVVct/f6jV1qL7obP2qbbm3LVsz22P7Nu1j3H7N2dcdTAwMTS6gVx1MDAwZpdI8jtcZsajVtKzXHUwMDE3RcPw02+/mVx1MDAxMVYrXHUwMDE4PIxyPGfg+FFcYv3+XHUwMDA3v2u1v5O/mXlGTiuy/a7nJFx1MDAwM5JLmamkmmw9XG78ZFqCXHRRSFCZdnDDLZguctpwtWN7oWOuxE1rl1dEXHUwMDA0V1x1MDAxN9dRXHUwMDE4NIeBuL/Y3rk+NLN2XFzPa0T33sMz2a3eeJSxKYxGQd+5cNtR72lcdDLt6bgwgFx1MDAxNTCjRsG42/OdMMyNXHSGdsuN7qFcciOUtj4swqeaabmDX4rw9Hc8giBiZZpcdTAwMWWm31xmvGBcdTAwMTRP/1x1MDAxZsqozZAxoGm3+l2wwm+bPi2nzdq26XP7+FCY0rSt57jdXlx1MDAxNDfizGROsracIc1cdJU4vVx1MDAxMM8w3G8nu/xH9uH99uPDP2272Xj62PLD2Fx1MDAxYfffnnSYrNPkXHUwMDFjJ3LuovQhMtssh/tcdTAwMWLrXHUwMDA3O6x7tLV5XHUwMDEwdJS9Q+vBWtrvx8fy2z5cZlx1MDAxZdzvnVxc3anh3mFA8U3rtHl0fE7yszzNb49GwW3V+971/cPGt1x1MDAxYil2T/Y6p/bGWbNx21/Cfb/uXFzv3VxyxiO+413998A7c7eOTvwl3Pdq/1x1MDAwYjmS11x1MDAxYqf9+v6+/UWEp6f2VbX7Pn4zfjBcdTAwMWW27Vx1MDAwN1RiIbVcdTAwMTJcdTAwMWNcdTAwMTPMtE6ve67fh4v+2PNMW9DqXHUwMDFiIH/IXHUwMDE4XFwgkJxcdTAwMWZkuVx1MDAwM4tp3IEpZ5gxhI1cdTAwMTHzyKPcq55FXHUwMDFleKK9XG55mDFcdTAwMGKRXHUwMDA3Y5bkXGJxylx1MDAxMJdcdTAwMDJcdTAwMWKuTKiExldfRCVKKEeLXCKVaGrBXHUwMDBlK02xUkxcbm52XCIlXHUwMDE2bkx95Fx1MDAxNazAMyhG3OzKfGLJec0kg+Quvtxccs1uXHUwMDA3ftRwvycyhHKtO/bA9e5zXHUwMDFilvgnLFbD7fq2XHUwMDA3s3Rrv/tccmdcdTAwMDQ+uZbrtO5Bj7hnXHUwMDBizM9ehJ6RXHUwMDBi2pp2XHUwMDE4uO12VjBbMLPt+s5ov4rQXHUwMDA1I7frgilnRcMmzYJGZy+VXHUwMDAyXHUwMDEwnplInCnllJBpcJRSXHRBaUbW5qHx+/k2q6Mvgoa7O+7RzmiX9/ubb13KXHUwMDA10lZezFx1MDAxOefWv6vlXHUwMDAwOCmp1oIvgLlcdTAwMTWK+Xb/XHUwMDAwN8ak45z21teb352D9ni7+bOKeVx1MDAxNF19lVtcbn9cdTAwMWWEftTabDb/7Iz5+1x1MDAxMl1K6DSUK6Qo0yBElVFevvlvXFxzXHUwMDA1xZaCboxSeFxcwHxcdTAwMGXxIMYvRPw0yVXKolJrXHUwMDAwPkVIKkyK+CdF+CtEidRcdTAwMWPJXHUwMDA14P9cdTAwMDLJpZrpTDDw6pJcdTAwMWLfK6qtv5LOzlGhgs5cdTAwMTasWaa8Zlx1MDAxMuFcdOAxJFx1MDAxMYHgj1ZcdTAwMDZes3659/lY3Trnw93uXHJcdTAwMTlcZrztceetyytcdTAwMDSObFJfmfyX9VVgRoRSZJGQdpW58tlcdTAwMTA11vW1pKG38Zfi423n5GBcdTAwMDVy9Sunfaa8Mj5ccuVaUqFcdTAwMTnwefWUtnTz37i8YiSFXHUwMDA13Vx1MDAxMGOEI6ZcdTAwMTTNI16T19JXbYG8alx1MDAxY28zgtSZVdJXJKhcdTAwMDZcdTAwMGbJREWvrK9aZ6xYkb5uvJK+zpGhKfq6sai+VklcdTAwMTYmmCFcdTAwMWbxcWGhzFx1MDAwN+c9ksmCL2FRXHUwMDE2nWWgW/T9ZYjXUnS7bYc955nC/Vx1MDAxY+0jXHUwMDA17XvCllx1MDAxNphcdTAwMTOBUCHjiFddssnWJ6KkhFx1MDAxMFx1MDAwNORRhShXVVBcdTAwMWFcdTAwMDbupI6bbzXjXHUwMDA2yY/0+1x1MDAxZlx1MDAxZkt7m9A//tSxXHUwMDEwc0eI/Fx1MDAxMHBFM6SgfZ5cdTAwMWRGm8Fg4Ebw9Cex5ZNPXHUwMDE5RvYo2nD9tut385v6eFx1MDAxZVQlfk7opzWOV6WOLMpcdTAwMTFXXGZcdTAwMTEgfUUxxpleXXtcdTAwMTjzs8VcdTAwMGKe4vjt+VbMrpZlrEBcdTAwMTZcdTAwMDNcdTAwMTOoXHUwMDEwWnDFXHUwMDA10Vx1MDAwNtmpXHUwMDE1wtKZj1KiYFOyNusxi/RcdTAwMWO7PblyYHH2WjZcdTAwMTApp63ZtYhZtKWwOVtLysHKXHUwMDEwV0pUpKRyi4Xx8V9EVYWoXHUwMDE4XHUwMDEzsGjSLFvmlIJNLZhgiHE0lpJVOeJ8l0xVx4RlXHUwMDA3XHUwMDEwVWGEyI6AZV1cdTAwMDVTVeZcYmAqJFx1MDAxOFx1MDAxNlxu1pdcdIE1MShLSUI+j6gq0yWyXGJhXGZjijlVknFzzJWawEvYcsnMNDs9nMVMklx1MDAxOdZJimbYYOSJmSgqScCN5r9hXnpB4WPZ8Vx1MDAxM8dcdTAwMTK4qSx+wlx1MDAwMk+2prREpFx1MDAwMNyqTI+fjJYyvlx1MDAxNX/q7E1cdTAwMDVDwDCYK4g+NJVcdTAwMTRcIlxmrYrwps9ccoZmp1xcXHUwMDEzRMdcdFx1MDAwMVx1MDAxM4imVFx1MDAxMVx0me7zWGaSXHUwMDAxXHUwMDE2Jpr1nbvN3d7WzfH38d79waF9fkmPXHUwMDA3RaLJ11SSXGKI5iMglnnbyERAzFx1MDAwMpQozinwudSZ2Kcs7/9/5Z28xz9cdTAwMTBcZuNES1x1MDAwNSpUwi/gMVP5JY7ykUC6ystcdTAwMTmr4penilx1MDAwN7Vqn+GJ7W5cZiOzP4tcdTAwMTZP0lxuiOd08oW+fIEkXG6G06ojOasnSyHlZi5SXHUwMDBl2bZPXHUwMDFiX/9cdTAwMWGcXbS3yPn+7kX94lx1MDAxMFx1MDAxNrhcdTAwMDKoOKNcdTAwMTaSXHUwMDA0tl5cdTAwMTClmMq/c0IpskTMXHUwMDFiXFwqgFx1MDAxYiNcdTAwMDXAaW0pXG6Zk4bcnlxuiUvwxotFQmFcdTAwMTGBID1cdTAwMTNcYjxcdTAwMDfC7eVW/d8n/lx1MDAxNOVcbjhaXHUwMDE0XHUwMDBlhuIllNP1nSOklcSiykHtqvGHrdpxp+OMfvf3bL9cdTAwMWT27L7zhmE409pF0Dj7SGRWLK1cdTAwMDXLXHUwMDAxkNBiLI1cdTAwMTUvgoygd6FqbybL51JcIlxyXHRXaZKPpr/GjOJ8UbGft1x1MDAxYSlywTQhc1x1MDAwN1x1MDAxOG9MXHUwMDA2IG5GvF74vUiGz+P3OjhcdTAwMTNcdTAwMTSETFx1MDAxNNP7Ys1vuaE3spjGXHUwMDE4JFRroSSVpFhcZtWvn97PPk2dRUk4i8GHI1x1MDAxMvPbXHUwMDFjsJdwUjYr/cVJ8zmJsOT8kZZm+NNcdTAwMGKPXHUwMDE0Q1xmoCu9L/IuKamOczXEOmZcdTAwMTXqjpTnx1xivFxuWlokXHUwMDFmj4uNXFxyXHUwMDEwIcIlVTJzpvNUeFxcwVx1MDAxOVx0lpRwzJVmoGtAUsWqQLH8uTRqmvv+hJz6/lx1MDAwNOOxXHUwMDEyI1X9/Ynj7fD+z+aec1x1MDAxOTY6N3Z3cL3Xulx1MDAxY7+dpCElSFx1MDAwYiFcIiEl45CVKaJcdTAwMTBcdTAwMTPK1FeTXHUwMDE4USlcdTAwMGLSLYaw0FRqlI9cdTAwMTgpY1x1MDAxNs6kbJPveiznharF0r60hMkxSLFY5D+R3s8/XGZcdTAwMTCrtt5qOcOoNH1YRf4y24IpXHTMh0dcIlxcs4fDRlx1MDAwNCuY8sraN9e53Shxik7yiSGdXHUwMDAwOoaOk0jdj1x1MDAwZj/+XHUwMDAx8T61nyJ9 - - - - Signalling ServerSocket ASocket B3. Messaging1. OfferHandshake2. AcceptHandshake \ No newline at end of file From ca2576329e85a6f54437eaae9d10dbfee628fca3 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Fri, 31 Mar 2023 09:08:40 +0200 Subject: [PATCH 7/9] Remove old intro link --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e0d178d6..9134752a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ p2p connections in web browsers or native to facilitate low-latency multiplayer | Reliable | ✓ | ✓ | | Unreliable | ✓ | ✓ | -- [Introductory blog post](https://johanhelsing.studio/posts/introducing-matchbox) - [Tutorial for usage with Bevy and GGRS](https://johanhelsing.studio/posts/extreme-bevy) The Matchbox project contains: From ceb470d3bf55c1c9d93b3ddc7c304dde6a32274a Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Fri, 31 Mar 2023 09:14:27 +0200 Subject: [PATCH 8/9] docs: Update for multiple channels --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9134752a..750e1baf 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The signaling service needs to run somewhere all clients can reach it over http When a client wants to join a p2p (mesh) network, it connects to the signaling service. The signaling server then notifies the peers that have already connected about the new peer (sends a `NewPeer` event). -Peers then negotiate a connection through the signaling server. The initiator sends an "offer" and the recipient responds with an "answer." Once peers have enough information relayed, a WebRTCPeerConnection is established for each peer, which comes with a data channel. +Peers then negotiate a connection through the signaling server. The initiator sends an "offer" and the recipient responds with an "answer." Once peers have enough information relayed, a [RTCPeerConnection](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection) is established for each peer, which comes with one or more data channels. All of this, however, is hidden from rust application code. All you will need to do on the client side, is: From 6669e198567891ab9d3acadd6dd9880fed9f7f27 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Fri, 31 Mar 2023 09:14:50 +0200 Subject: [PATCH 9/9] docs: Update for bevy_matchbox --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 750e1baf..92fb4ae2 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,8 @@ All of this, however, is hidden from rust application code. All you will need to - Create a new socket, and give it a signaling server url - `.await` the message loop future that processes new messages. - - If you are using Bevy, it can be spawned as a Bevy io task (see the [`bevy_ggrs`](examples/bevy_ggrs/) example). - - If you are using WASM, `wasm-bindgen-futures` can help (see the [`simple`](examples/simple/)). + - If you are using [Bevy](https://bevyengine.org), this is done automatically by `bevy_matchbox` (see the [`bevy_ggrs`](examples/bevy_ggrs/) example). + - Otherwise, if you are using WASM, `wasm-bindgen-futures` can help (see the [`simple`](examples/simple/)). - Alternatively, the future can be polled manually, i.e. once per frame. You can hook into the lifecycle of your socket through the socket's API, such as connection state changes. Similarly, you can send packets to peers using the socket through a simple, non-blocking method.