Constructor
new ServerPlugin(server, id)
- Source:
Parameters:
Name | Type | Description |
---|---|---|
server |
Server | The soundworks server instance. |
id |
string | User defined id of the plugin as defined in ServerPluginManager#register. |
Extends
Members
clients :Set.<ServerClient>
- Description:
Set of the clients registered in the plugin.
- Source:
- See:
Set of the clients registered in the plugin.
Type:
- Set.<ServerClient>
(readonly) id :string
- Description:
User defined ID of the plugin.
- Source:
- Overrides:
- See:
User defined ID of the plugin.
Type:
- string
server :Server
- Description:
Instance of soundworks server.
- Source:
- See:
Instance of soundworks server.
Type:
(protected) state :object
- Description:
Placeholder that stores internal (local) state of the plugin. The state should be modified through the
propagateStateChange
method to ensure the change to be properly propagated to manageronStateChange
callbacks.
- Source:
- Overrides:
- See:
Placeholder that stores internal (local) state of the plugin. The state
should be modified through the propagateStateChange
method to ensure
the change to be properly propagated to manager onStateChange
callbacks.
Type:
- object
status :'idle'|'inited'|'started'|'errored'
- Description:
Current status of the plugin.
- Source:
- Overrides:
Current status of the plugin.
Type:
- 'idle' | 'inited' | 'started' | 'errored'
(readonly) type :string
- Description:
Type of the plugin, i.e. the ClassName.
Usefull to do perform some logic based on certain types of plugins without knowing under which
id
they have been registered. (e.g. creating some generic views, etc.)
- Source:
- Overrides:
Type of the plugin, i.e. the ClassName.
Usefull to do perform some logic based on certain types of plugins without
knowing under which id
they have been registered. (e.g. creating some generic
views, etc.)
Type:
- string
Methods
(async) addClient(client)
- Description:
Method called when a client (which registered the client-side plugin), connects to the application. Override this method if you need to perform some particular logic (e.g. creating a shared state) for each clients.
- Source:
Parameters:
Name | Type | Description |
---|---|---|
client |
ServerClient |
onStateChange(callback) → {pluginDeleteOnStateChangeCallback}
- Description:
Listen to the state changes propagated by BasePlugin.propagateStateChange
- Source:
- Overrides:
Example
const unsubscribe = plugin.onStateChange(pluginState => console.log(pluginState));
// stop listening state changes
unsubscribe();
Parameters:
Name | Type | Description |
---|---|---|
callback |
pluginOnStateChangeCallback | Callback to execute when a state change is propagated. |
Returns:
propagateStateChange(updates)
- Description:
Apply updates to the plugin state and propagate the updated state to the
onStateChange
listeners. The state changes will also be propagated through thePluginManager#onStateChange
listeners.
- Source:
- Overrides:
- See:
Parameters:
Name | Type | Description |
---|---|---|
updates |
object | Updates to be merged in the plugin state. |
(async) removeClient(client)
- Description:
Method called when a client (which registered the client-side plugin), disconnects from the application. Override this method if you need to perform some particular logic (e.g. creating a shared state) for each clients.
- Source:
Parameters:
Name | Type | Description |
---|---|---|
client |
ServerClient |
(async) start()
- Description:
Start the plugin.
This method is automatically called during the client or server
init()
lifecyle step. Afterstart()
is fulfilled the plugin should be ready to use.
- Source:
- Overrides:
Example
// server-side couterpart of a plugin that creates a dedicated global shared
// state on which the server-side part can attach.
class MyPlugin extends ServerPlugin {
constructor(server, id) {
super(server, id);
this.server.stateManager.registerSchema(`my-plugin:${this.id}`, {
someParam: {
type: 'boolean',
default: false,
},
// ...
});
}
async start() {
await super.start()
this.sharedState = await this.server.stateManager.create(`my-plugin:${this.id}`);
}
async stop() {
await this.sharedState.delete();
}
}
(async) stop()
- Description:
Stop the plugin.
This method is automatically called during the client or server
stop()
lifecyle step.
- Source:
- Overrides:
Example
// server-side couterpart of a plugin that creates a dedicated global shared
// state on which the client-side part can attach.
class MyPlugin extends ServerPlugin {
constructor(server, id) {
super(server, id);
this.server.stateManager.registerSchema(`my-plugin:${this.id}`, {
someParam: {
type: 'boolean',
default: false,
},
// ...
});
}
async start() {
await super.start()
this.sharedState = await this.server.stateManager.create(`my-plugin:${this.id}`);
this.sharedState.onUpdate(updates => this.doSomething(updates));
}
async stop() {
await this.sharedState.delete();
}
}