public BasePlayer NoUploadsPimpPlayer(SimplePimpSession s) { var socket = NewPimpSocket(s); var playlist = new SimplePimpPlaylist(s, socket); return(new PimpPlayer(s, socket, playlist)); }
protected PimpWebSocket NewPimpSocket(SimplePimpSession session) { var e = session.Endpoint; var protocolPart = e.Protocol == Protocols.https ? "wss://" : "ws://"; var uri = new Uri(protocolPart + e.Server + ":" + e.Port + session.SocketResource); var ws = Provider.NewWebSocket(uri, session.AuthHeader(e), SimplePimpSession.JSONv18); return(new PimpWebSocket(ws)); }
public WebSocketPlayer(SimplePimpSession session, PimpWebSocket webSocket) { Session = session; this.webSocket = webSocket; this.session = session; // the lifetime of this player is the same as the websocket // so we don't care about deregistering event handlers // Update: I believe the above is untrue. webSocket.MuteToggled += async muteOrNot => await OnUiThread(() => IsMute = muteOrNot); webSocket.VolumeChanged += async volume => await OnUiThread(() => Volume = volume); webSocket.TimeUpdated += OnTimeUpdated; webSocket.TrackChanged += async track => { // TODO do better FeedbackMessage = null; await OnUiThread(() => NowPlaying = track); }; webSocket.PlayStateChanged += async state => await OnUiThread(() => CurrentPlayerState = state); webSocket.StatusUpdateReceived += UpdateStatus; webSocket.ShortStatusUpdateReceived += async shortStatus => await UpdateShortStatus(shortStatus); webSocket.Welcomed += async() => { await OnUiThread(() => IsOnline = true); await Utils.SuppressAsync <Exception>(async() => await PostSimple("status")); }; //webSocket.Disconnected += str => IsOnline = false; webSocket.SocketClosed += async str => { await OnUiThread(() => IsOnline = false); // Tries to reconnect, once await Utils.SuppressAsync <Exception>(OpenWebSocketAsync); }; webSocket.ErrorOccurred += async() => await OnUiThread(() => IsOnline = false); IsEventBased = true; }
//public static readonly string postResource = "/playback"; public PimpPlayer(SimplePimpSession s, PimpWebSocket webSocket, BasePlaylist playlist) : base(s, webSocket) { Playlist = playlist; }