docs: Lots of changes

This commit is contained in:
Azure CI 2021-04-26 09:55:50 -07:00
parent 5ce89a4734
commit fcd7d07001
6 changed files with 76 additions and 67 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "obs-websocket-docs", "name": "obs-websocket-docs",
"version": "1.0.0", "version": "1.1.0",
"description": "", "description": "",
"main": "docs.js", "main": "docs.js",
"scripts": { "scripts": {

View File

@ -1,11 +1 @@
# Events ## Events
Events are broadcast by the server to each connected client when a recognized action occurs within OBS.
An event message will contain at least the following base fields:
- `update-type` _String_: the type of event.
- `stream-timecode` _String (optional)_: time elapsed between now and stream start (only present if OBS Studio is streaming).
- `rec-timecode` _String (optional)_: time elapsed between now and recording start (only present if OBS Studio is recording).
Timecodes are sent using the format: `HH:MM:SS.mmm`
Additional fields may be present in the event message depending on the event type.

View File

@ -1,38 +1,82 @@
# obs-websocket 4.9.0 protocol reference # obs-websocket 5.0.0 protocol reference
# General Introduction
Messages are exchanged between the client and the server as JSON objects.
This protocol is based on the original OBS Remote protocol created by Bill Hamilton, with new commands specific to OBS Studio. As of v5.0.0, backwards compatability with the protocol will not be kept.
# Authentication ## General Introduction
**Starting with obs-websocket 4.9, authentication is enabled by default and users are encouraged to configure a password on first run.** obs-websocket provides a feature-rich RPC communication protocol, giving access to much of OBS's feature set. This document contains everything you should know in order to make a connection and use obs-websocket's functionality to the fullest.
`obs-websocket` uses SHA256 to transmit credentials.
A request for [`GetAuthRequired`](#getauthrequired) returns two elements: ## Table of Contents
- A `challenge`: a random string that will be used to generate the auth response. - [Connecting to obs-websocket](#connecting_to_obs-websocket)
- A `salt`: applied to the password when generating the auth response. - [Connection steps](#connecting_steps)
- [Creating an authentication string](#connecting_authentication_string)
- [Base message types](#message_types)
- [Hello](#basemessage_hello)
- [Identify](#basemessage_identify)
- [Identified](#basemessage_identified)
- [Reidentify](#basemessage_reidentify)
- [Event](#basemessage_event)
- [Request](#basemessage_request)
- [RequestResponse](#basemessage_requestresponse)
- [RequestBatch](#basemessage_requestbatch)
- [RequestBatchResponse](#basemessage_requestbatchresponse)
- [Requests](#requests)
- [Events](#events)
To generate the answer to the auth challenge, follow this procedure:
- Concatenate the user declared password with the `salt` sent by the server (in this order: `password + server salt`).
- Generate a binary SHA256 hash of the result and encode the resulting SHA256 binary hash to base64, known as a `base64 secret`.
- Concatenate the base64 secret with the `challenge` sent by the server (in this order: `base64 secret + server challenge`).
- Generate a binary SHA256 hash of the result and encode it to base64.
- Voilà, this last base64 string is the `auth response`. You may now use it to authenticate to the server with the [`Authenticate`](#authenticate) request.
Pseudo Code Example: ## Connecting to obs-websocket {connecting_to_obs-websocket}
``` Here's info on how to connect to obs-websocket
password = "supersecretpassword"
challenge = "ztTBnnuqrqaKDzRM3xcVdbYm"
salt = "PZVbYpvAnZut2SS6JNJytDm9"
secret_string = password + salt ### Connection steps {connecting_steps}
secret_hash = binary_sha256(secret_string) - Step 1
secret = base64_encode(secret_hash)
auth_response_string = secret + challenge ### Creating an authentication string {connecting_authentication_string}
auth_response_hash = binary_sha256(auth_response_string) - Start by
auth_response = base64_encode(auth_response_hash)
```
You can also refer to any of the client libraries listed on the [README](README.md) for examples of how to authenticate.
## Message Types {message_types}
The following message types (`messageType`) are the base message types which may be sent to and from obs-websocket. Sending a message with a `messageType` that is not recognized to the obs-websocket server will result in your connection being closed with `WebsocketCloseCode::UnknownMessageType`.
### Hello {basemessage_hello}
- Sent from: obs-websocket
- Sent to: Freshly connected websocket client
- Description:
### Identify {basemessage_identify}
- Sent from: Freshly connected websocket client
- Sent to: obs-websocket
- Description:
### Identified {basemessage_event}
- Sent from: obs-websocket
- Sent to: Freshly identified client
- Description:
### Reidentify {basemessage_reidentify}
- Sent from: Identified client
- Sent to: obs-websocket
- Description:
### Event {basemessage_event}
- Sent from: obs-websocket
- Sent to: All subscribed and identified clients
- Description:
### Request {basemessage_request}
- Sent from: Identified client
- Sent to: obs-websocket
- Description:
### RequestResponse {basemessage_requestresponse}
- Sent from: obs-websocket
- Sent to: Identified client which made the request
- Description:
### RequestBatch {basemessage_requestbatch}
- Sent from: Identified client
- Sent to: obs-websocket
- Description:
### RequestBatchResponse {basemessage_requestbatchresponse}
- Sent from: obs-websocket
- Sent to: Identified client which made the request
- Description:

View File

@ -1,11 +1 @@
# Requests ## Requests
Requests are sent by the client and require at least the following two fields:
- `request-type` _String_: String name of the request type.
- `message-id` _String_: Client defined identifier for the message, will be echoed in the response.
Once a request is sent, the server will return a JSON response with at least the following fields:
- `message-id` _String_: The client defined identifier specified in the request.
- `status` _String_: Response status, will be one of the following: `ok`, `error`
- `error` _String (Optional)_: An error message accompanying an `error` status.
Additional information may be required/returned depending on the request type. See below for more information.

View File

@ -1,2 +0,0 @@
# Typedefs
These are complex types, such as `Source` and `Scene`, which are used as arguments or return values in multiple requests and/or events.

View File

@ -7,19 +7,6 @@
{{#read "partials/typedefsHeader.md"}}{{/read}}
{{#each typedefs}}
## {{typedefs.0.name}}
| Name | Type | Description |
| ---- | :---: | ------------|
{{#each properties}}
| `{{name}}` | _{{depipe type}}_ | {{{depipe description}}} |
{{/each}}
{{/each}}
{{#read "partials/eventsHeader.md"}}{{/read}} {{#read "partials/eventsHeader.md"}}{{/read}}
{{#each events}} {{#each events}}