diff options
author | Chocobozzz <me@florianbigard.com> | 2022-10-11 11:07:40 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-10-11 11:11:04 +0200 |
commit | 9d4c60dccc8e7e777ad139a82e9f61feda9d21fc (patch) | |
tree | 2931338f340b398d36c43575fea95cf1fbbfeb4c /support | |
parent | 9866921cbf3f8f0925f7ffb3a231d5dfe2d30953 (diff) | |
download | PeerTube-9d4c60dccc8e7e777ad139a82e9f61feda9d21fc.tar.gz PeerTube-9d4c60dccc8e7e777ad139a82e9f61feda9d21fc.tar.zst PeerTube-9d4c60dccc8e7e777ad139a82e9f61feda9d21fc.zip |
Add ability for plugins to register ws routes
Diffstat (limited to 'support')
-rw-r--r-- | support/doc/plugins/guide.md | 36 | ||||
-rw-r--r-- | support/nginx/peertube | 5 |
2 files changed, 41 insertions, 0 deletions
diff --git a/support/doc/plugins/guide.md b/support/doc/plugins/guide.md index 431d5332f..1c809258a 100644 --- a/support/doc/plugins/guide.md +++ b/support/doc/plugins/guide.md | |||
@@ -12,6 +12,7 @@ | |||
12 | - [Storage](#storage) | 12 | - [Storage](#storage) |
13 | - [Update video constants](#update-video-constants) | 13 | - [Update video constants](#update-video-constants) |
14 | - [Add custom routes](#add-custom-routes) | 14 | - [Add custom routes](#add-custom-routes) |
15 | - [Add custom WebSocket handlers](#add-custom-websocket-handlers) | ||
15 | - [Add external auth methods](#add-external-auth-methods) | 16 | - [Add external auth methods](#add-external-auth-methods) |
16 | - [Add new transcoding profiles](#add-new-transcoding-profiles) | 17 | - [Add new transcoding profiles](#add-new-transcoding-profiles) |
17 | - [Server helpers](#server-helpers) | 18 | - [Server helpers](#server-helpers) |
@@ -317,6 +318,41 @@ The `ping` route can be accessed using: | |||
317 | * Or `/plugins/:pluginName/router/ping` | 318 | * Or `/plugins/:pluginName/router/ping` |
318 | 319 | ||
319 | 320 | ||
321 | #### Add custom WebSocket handlers | ||
322 | |||
323 | You can create custom WebSocket servers (like [ws](https://github.com/websockets/ws) for example) using `registerWebSocketRoute`: | ||
324 | |||
325 | ```js | ||
326 | function register ({ | ||
327 | registerWebSocketRoute, | ||
328 | peertubeHelpers | ||
329 | }) { | ||
330 | const wss = new WebSocketServer({ noServer: true }) | ||
331 | |||
332 | wss.on('connection', function connection(ws) { | ||
333 | peertubeHelpers.logger.info('WebSocket connected!') | ||
334 | |||
335 | setInterval(() => { | ||
336 | ws.send('WebSocket message sent by server'); | ||
337 | }, 1000) | ||
338 | }) | ||
339 | |||
340 | registerWebSocketRoute({ | ||
341 | route: '/my-websocket-route', | ||
342 | |||
343 | handler: (request, socket, head) => { | ||
344 | wss.handleUpgrade(request, socket, head, ws => { | ||
345 | wss.emit('connection', ws, request) | ||
346 | }) | ||
347 | } | ||
348 | }) | ||
349 | } | ||
350 | ``` | ||
351 | |||
352 | The `my-websocket-route` route can be accessed using: | ||
353 | * `/plugins/:pluginName/:pluginVersion/ws/my-websocket-route` | ||
354 | * Or `/plugins/:pluginName/ws/my-websocket-route` | ||
355 | |||
320 | #### Add external auth methods | 356 | #### Add external auth methods |
321 | 357 | ||
322 | If you want to add a classic username/email and password auth method (like [LDAP](https://framagit.org/framasoft/peertube/official-plugins/-/tree/master/peertube-plugin-auth-ldap) for example): | 358 | If you want to add a classic username/email and password auth method (like [LDAP](https://framagit.org/framasoft/peertube/official-plugins/-/tree/master/peertube-plugin-auth-ldap) for example): |
diff --git a/support/nginx/peertube b/support/nginx/peertube index abb83d5c4..f6f754b58 100644 --- a/support/nginx/peertube +++ b/support/nginx/peertube | |||
@@ -132,6 +132,11 @@ server { | |||
132 | try_files /dev/null @api_websocket; | 132 | try_files /dev/null @api_websocket; |
133 | } | 133 | } |
134 | 134 | ||
135 | # Plugin websocket routes | ||
136 | location ~ ^/plugins/[^/]+(/[^/]+)?/ws/ { | ||
137 | try_files /dev/null @api_websocket; | ||
138 | } | ||
139 | |||
135 | ## | 140 | ## |
136 | # Performance optimizations | 141 | # Performance optimizations |
137 | # For extra performance please refer to https://github.com/denji/nginx-tuning | 142 | # For extra performance please refer to https://github.com/denji/nginx-tuning |