Pusher username management; Spotify vs mopidy middleware glitching

This commit is contained in:
James Barnsley
2016-10-28 09:14:29 +13:00
parent 7be39dc4d4
commit 696e385b7e
10 changed files with 199 additions and 32 deletions

View File

@ -10,6 +10,14 @@ export function setConfig( config ){
}
}
export function setUsername( username ){
return {
type: 'PUSHER_INSTRUCT',
action: 'set_username',
data: { username: username }
}
}
export function connect(){
return {
type: 'PUSHER_CONNECT'
@ -22,10 +30,17 @@ export function disconnect(){
}
}
export function instruct( call, value ){
export function getConnectionList(){
return {
type: 'PUSHER_INSTRUCT',
call: call,
value: value
action: 'get_connections'
}
}
export function instruct( action, data = null ){
return {
type: 'PUSHER_INSTRUCT',
action: action,
data: data
}
}

View File

@ -40,16 +40,23 @@ const PusherMiddleware = (function(){
store.dispatch({ type: 'PUSHER_CONNECTING' });
var state = store.getState();
var connection = {
clientid: Math.random().toString(36).substr(2, 9),
connectionid: helpers.generateGuid(),
username: Math.random().toString(36).substr(2, 9)
}
//if( state.pusher.username ) connection.username = state.pusher.username;
socket = new WebSocket(
'ws://'+state.mopidy.host+':'+state.pusher.port+'/pusher'
'ws://'+state.mopidy.host+':'+state.pusher.port+'/pusher',
[ connection.clientid, connection.connectionid, connection.username ]
);
socket.onopen = function(){
store.dispatch({ type: 'PUSHER_CONNECTED' });
socket.onopen = () => {
store.dispatch({ type: 'PUSHER_CONNECTED', connection: connection });
};
socket.onmessage = function(message){
socket.onmessage = (message) => {
var message = JSON.parse(message.data);
handleMessage( socket, store, message )
};
@ -58,6 +65,11 @@ const PusherMiddleware = (function(){
case 'PUSHER_CONNECTED':
makeRequest({ action: 'get_version' });
return next(action);
break;
case 'PUSHER_INSTRUCT':
makeRequest({ action: action.action, data: action.data });
break;
// This action is irrelevant to us, pass it on to the next middleware

View File

@ -3,19 +3,22 @@ export default function reducer(pusher = {}, action){
switch (action.type) {
case 'PUSHER_CONNECTED':
return Object.assign({}, pusher, { connected: true, connecting: false });
return Object.assign({}, pusher, { connected: true, connecting: false, connectionid: action.connection.connectionid });
case 'PUSHER_DISCONNECTED':
return Object.assign({}, pusher, { connected: false, connecting: false });
case 'PUSHER_SET_PORT':
return Object.assign({}, pusher, { port: action.port });
case 'PUSHER_SET_CONFIG':
return Object.assign({}, pusher, {
username: action.username,
port: action.port
});
case 'PUSHER_CLIENT_CONNECTED':
return Object.assign({}, pusher, { connections: action.data });
return Object.assign({}, pusher, { connection: action.data });
case 'PUSHER_CONNECTIONS_LOADED':
return Object.assign({}, pusher, { connections: action.data });
case 'PUSHER_CONNECTIONS':
return Object.assign({}, pusher, { connections: action.data.connections });
case 'PUSHER_VERSION':
return Object.assign({}, pusher, { version: action.data });