From 62f4659f03de49965c5218038e67a171df4bfc50 Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Thu, 15 Apr 2021 15:17:59 +0200 Subject: [PATCH] docs: update readme --- README.md | 162 ++++++++++++++++++++++++++++++++++++++++- assets/dashboard.png | Bin 0 -> 71080 bytes assets/login-modal.png | Bin 0 -> 10818 bytes package.json | 13 ++-- 4 files changed, 168 insertions(+), 7 deletions(-) create mode 100644 assets/dashboard.png create mode 100644 assets/login-modal.png diff --git a/README.md b/README.md index e80d707..d38c618 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,166 @@ # Socket.IO Admin UI -WIP +![dashboard screenshot](assets/dashboard.png) + +## Table of contents + +- [How to use](#how-to-use) + - [Server-side](#server-side) + - [Client-side](#client-side) +- [Available options](#available-options) + - [`auth`](#auth) + - [`namespaceName`](#namespacename) + - [`readonly`](#readonly) + - [`serverId`](#serverid) + - [`store`](#store) +- [How it works](#how-it-works) +- [License](#license) + +## How to use + +### Server-side + +First, install the `@socket.io/admin-ui` package: + +``` +npm i @socket.io/admin-ui +``` + +And then invoke the `instrument` method on your Socket.IO server: + +```js +const { createServer } = require("http"); +const { Server } = require("socket.io"); +const { instrument } = require("@socket.io/admin-ui"); + +const httpServer = createServer(); + +const io = new Server(httpServer, { + cors: { + origin: ["https://admin.socket.io"] + } +}); + +instrument(io, { + auth: false +}); + +httpServer.listen(3000); +``` + +The module is compatible with: + +- Socket.IO v4 server +- Socket.IO v3 server (>= 3.1.0), but without the operations on rooms (join, leave, disconnection) + +### Client-side + +You can then head up to https://admin.socket.io, or host the files found in the `ui/dist` folder. + +**Important note**: the website at https://admin.socket.io is totally static (hosted on [Vercel](https://vercel.com)), we do not (and will never) store any information about yourself or your browser (no tracking, no analytics, ...). That being said, hosting the files yourself is totally fine. + +You should see the following modal: + +![login modal screenshot](assets/login-modal.png) + +Please enter the URL of your server, including the namespace (for example, `http://localhost:3000/admin` or `https://example.com/admin`) and the credentials, if applicable (see the `auth` option [below](#auth)). + +### Available options + +#### `auth` + +Default value: `-` + +This option is mandatory. You can either disable authentication (please use with caution): + +```js +instrument(io, { + auth: false +}); +``` + +Or use basic authentication: + +```js +instrument(io, { + auth: { + type: "basic", + username: "admin", + password: "$2b$10$heqvAkYMez.Va6Et2uXInOnkCT6/uQj1brkrbyG3LpopDklcq7ZOS" // "changeit" encrypted with bcrypt + }, +}); +``` + +#### `namespaceName` + +Default value: `/admin` + +The name of the namespace which will be created to handle the administrative tasks. + +```js +instrument(io, { + namespaceName: "custom" +}); +``` + +This namespace is a classic Socket.IO namespace, you can access it with: + +```js +const adminNamespace = io.of("/admin"); +``` + +More information [here](https://socket.io/docs/v4/namespaces/). + +#### `readonly` + +Default value: `false` + +Whether to put the admin UI in read-only mode (no join, leave or disconnect allowed). + +```js +instrument(io, { + readonly: true +}); +``` + +#### `serverId` + +Default value: `require("os").hostname()` + +The ID of the given server. If you have several Socket.IO servers on the same machine, please give them a distinct ID: + +```js +instrument(io, { + serverId: `${require("os").hostname()}#${process.pid}` +}); +``` + +#### `store` + +Default value: `new InMemoryStore()` + +The store is used to store the session IDs so the user do not have to retype the credentials upon reconnection. + +If you use basic authentication in a multi-server setup, you should provide a custom store: + +```js +const { instrument, RedisStore } = require("@socket.io/admin-ui"); + +instrument(io, { + store: new RedisStore(redisClient) +}); +``` + +## How it works + +You can check the details of the implementation in the [lib/index.ts](lib/index.ts) file. + +The `instrument` method simply: + +- creates a [namespace](https://socket.io/docs/v4/namespaces/) and adds an authentication [middleware](https://socket.io/docs/v4/middlewares/) if applicable +- register listeners for the `connection` and `disconnect` event for each existing namespaces to track socket instances +- register a timer which will periodically send stats from the server to the UI +- register handlers for the `join`, `leave` and `_disconnect` commands sent from the UI ## License diff --git a/assets/dashboard.png b/assets/dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..d7285481185c0ceea737963ca60773982e3225d4 GIT binary patch literal 71080 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

)!BA*SG6`TpEr)~i-K8{{nOREp;%lJ2E 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 literal 0 HcmV?d00001 diff --git a/assets/login-modal.png b/assets/login-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..fc254787abff8f10eb65178d3bae7c1b91d692dd GIT binary patch literal 10818 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index ebd5b68..7c3e2a4 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "version": "0.0.1", "description": "Admin UI for Socket.IO", "files": [ - "dist/" + "dist/", + "ui/dist/" ], "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -15,7 +16,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/socketio/socket.io-admin.git" + "url": "git+https://github.com/socketio/socket.io-admin-ui.git" }, "keywords": [ "socket.io", @@ -25,12 +26,12 @@ "author": "Damien Arrachequesne ", "license": "MIT", "bugs": { - "url": "https://github.com/socketio/socket.io-admin/issues" + "url": "https://github.com/socketio/socket.io-admin-ui/issues" }, - "homepage": "https://github.com/socketio/socket.io-admin#readme", + "homepage": "https://github.com/socketio/socket.io-admin-ui#readme", "dependencies": { - "@types/bcrypt": "^3.0.0", - "bcrypt": "^5.0.1", + "@types/bcrypt": "~3.0.0", + "bcrypt": "~5.0.1", "debug": "~4.3.1" }, "peerDependencies": {