Pass WebSocket data without additional signal connection

This commit is contained in:
Rafostar
2020-12-15 12:36:06 +01:00
parent 2b62900227
commit b4e52d654b
3 changed files with 24 additions and 37 deletions

View File

@@ -251,6 +251,21 @@ class ClapperPlayer extends PlayerBase
this[action](); this[action]();
} }
receiveWs(action, value)
{
switch(action) {
case 'toggle_play':
case 'play':
case 'pause':
case 'set_media':
this[action](value);
break;
default:
super.receiveWs(action, value);
break;
}
}
_setHideCursorTimeout() _setHideCursorTimeout()
{ {
this._clearTimeout('hideCursor'); this._clearTimeout('hideCursor');
@@ -642,21 +657,6 @@ class ClapperPlayer extends PlayerBase
return true; return true;
} }
_onWsData(server, action, value)
{
switch(action) {
case 'toggle_play':
case 'play':
case 'pause':
case 'set_media':
this[action](value);
break;
default:
super._onWsData(server, action, value);
break;
}
}
_onCloseRequest(window) _onCloseRequest(window)
{ {
this._performCloseCleanup(window); this._performCloseCleanup(window);

View File

@@ -69,7 +69,6 @@ class ClapperPlayerBase extends GstPlayer.Player
this.visualization_enabled = false; this.visualization_enabled = false;
this.webserver = null; this.webserver = null;
this.websocketSignal = null;
this.set_all_plugins_ranks(); this.set_all_plugins_ranks();
this.set_initial_config(); this.set_initial_config();
@@ -189,7 +188,7 @@ class ClapperPlayerBase extends GstPlayer.Player
this.webserver.sendMessage({ action, value }); this.webserver.sendMessage({ action, value });
} }
_onWsData(server, action, value) receiveWs(action, value)
{ {
debug(`unhandled WebSocket action: ${action}`); debug(`unhandled WebSocket action: ${action}`);
} }
@@ -300,16 +299,9 @@ class ClapperPlayerBase extends GstPlayer.Player
this.webserver = new WebServer(settings.get_int('webserver-port')); this.webserver = new WebServer(settings.get_int('webserver-port'));
this.webserver.startListening(); this.webserver.startListening();
this.webserver.passMsgData = this.receiveWs.bind(this);
if(!this.websocketSignal) {
this.websocketSignal = this.webserver.connect(
'websocket-data', this._onWsData.bind(this)
);
}
} }
else if(this.webserver) { else if(this.webserver) {
this.webserver.disconnect(this.websocketSignal);
this.websocketSignal = null;
this.webserver.stopListening(); this.webserver.stopListening();
} }
break; break;

View File

@@ -4,17 +4,8 @@ const Debug = imports.clapper_src.debug;
let { debug } = Debug; let { debug } = Debug;
var WebServer = GObject.registerClass({ var WebServer = GObject.registerClass(
Signals: { class ClapperWebServer extends Soup.Server
'websocket-data': {
flags: GObject.SignalFlags.RUN_FIRST,
param_types: [
GObject.TYPE_STRING,
GObject.TYPE_INT || GObject.TYPE_STRING
]
}
}
}, class ClapperWebServer extends Soup.Server
{ {
_init(port) _init(port)
{ {
@@ -96,6 +87,10 @@ var WebServer = GObject.registerClass({
} }
} }
passMsgData(action, value)
{
}
_closeCleanup() _closeCleanup()
{ {
while(this.wsConns.length) { while(this.wsConns.length) {
@@ -140,7 +135,7 @@ var WebServer = GObject.registerClass({
if(!parsedMsg || !parsedMsg.action) if(!parsedMsg || !parsedMsg.action)
return debug('no "action" in parsed WebSocket message'); return debug('no "action" in parsed WebSocket message');
this.emit('websocket-data', parsedMsg.action, parsedMsg.value || 0); this.passMsgData(parsedMsg.action, parsedMsg.value || 0);
} }
_onWsClosed(connection) _onWsClosed(connection)