Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
obs-websocket-js
Advanced tools
OBSWebSocket.JS allows Javascript-based connections to the Open Broadcaster plugin obs-websocket.
Download | Samples | Changelog
npm install obs-websocket-js --save
bower install obs-websocket-js --save
The web distributable exposes a global named OBSWebSocket
.
<script type='text/javascript' src='./dist/obs-websocket.js'></script>
In node...
const OBSWebSocket = require('obs-websocket-js');
Create a new WebSocket connection using the following.
localhost
with a default port of 4444
.const obs = new OBSWebSocket();
obs.connect({ address: 'localhost:4444', password: '$up3rSecretP@ssw0rd' });
All requests support the following two Syntax options where both err
and data
will contain the raw response from the WebSocket plugin.
Note that all response objects will supply both the original obs-websocket response items in their original format (ex: 'response-item'
), but also camelCased (ex: 'responseItem'
) for convenience.
obs-websocket
plugin.
.send
), you may also use the lowerCamelCase
version of the request, i.e. requestName
instead of RequestName
. This may be preferred if you use a linter such as ESlint.request-type
and message-id
will be bound automatically.// These three options are equivalent for every available request.
obs.send('RequestName', {args}, callback(err, data)) returns Promise
obs.RequestName({args}, callback(err, data)) returns Promise
obs.requestName({args}, callback(err, data)) returns Promise
// The following are additional supported requests.
obs.connect({ address: 'address', password: 'password' }, callback(err, data)) returns Promise
All events support the following two Syntax options where data
will contain the raw response from the WebSocket plugin.
Note that all response objects will supply both the original obs-websocket response items in their original format (ex: 'response-item'
), but also camelCased (ex: 'responseItem'
) for convenience.
obs-websocket
plugin.obs.on('EventName', callback(data));
obs.onEventName(callback(data));
// The following are additional supported requests.
obs.on('ConnectionOpened', callback(data));
obs.on('ConnectionClosed', callback(data));
obs.on('AuthenticationSuccess', callback(data));
obs.on('AuthenticationFailure', callback(data));
If this does not yet support a new method, or if you have custom hooks in your build of obs-websocket
and prefer to use the obs.requestName
and obs.onEventName
syntaxes, you can register your own methods at runtime. As always, these must match exactly what is to be expected from the plugin.
obs.registerRequest('RequestName')
obs.registerRequest(['RequestName1', 'RequestName2'])
obs.registerEvent('EventName')
obs.registerEvent(['EventName1', 'EventName2'])
By default, certain types of WebSocket errors will be thrown as uncaught exceptions. To ensure that you are handling every error, you must do the following:
.catch()
handler to every returned Promise.error
event listener to the OBSWebSocket
object.const OBSWebSocket = require('obs-websocket-js');
const obs = new OBSWebSocket();
obs.connect({ address: 'localhost:4444', password: '$up3rSecretP@ssw0rd' })
.then(() => {
console.log('Success! We\'re connected & authenticated.');
return obs.getSceneList({});
})
.then(data => {
console.log(`${data.scenes.length} Available Scenes!`);
data.scenes.forEach(scene => {
if (scene.name !== data.currentScene) {
console.log('Found a different scene! Switching to Scene:', scene.name);
obs.setCurrentScene({'scene-name': scene.name});
}
});
})
.catch(err => { // Ensure that you add a catch handler to every Promise chain.
console.log(err);
});
obs.onSwitchScenes(data => {
console.log('New Active Scene:', data.sceneName);
});
// You must add this handler to avoid uncaught exceptions.
obs.on('error', err => {
console.error('socket error:', err);
});
To enable debug logging, set the DEBUG
environment variable:
# Enables debug logging for all modules of osb-websocket-js
DEBUG=obs-websocket-js:*
# on Windows
set DEBUG=obs-websocket-js:*
If you have multiple libraries or application which use the DEBUG
environment variable, they can be joined with commas:
DEBUG=foo,bar:*,obs-websocket-js:*
# on Windows
set DEBUG=foo,bar:*,obs-websocket-js:*
Browser debugging uses localStorage
localStorage.debug = 'obs-websocket-js:*';
localStorage.debug = 'foo,bar:*,obs-websocket-js:*';
For more information, see the debug
documentation.
To add your project to this list, submit a Pull Request.
FAQs
OBS Websocket API in Javascript, consumes @Palakis/obs-websocket
The npm package obs-websocket-js receives a total of 2,773 weekly downloads. As such, obs-websocket-js popularity was classified as popular.
We found that obs-websocket-js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.