示例#1
0
        public BasePlayer NoUploadsPimpPlayer(SimplePimpSession s)
        {
            var socket   = NewPimpSocket(s);
            var playlist = new SimplePimpPlaylist(s, socket);

            return(new PimpPlayer(s, socket, playlist));
        }
示例#2
0
        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));
        }
示例#3
0
        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;
        }
示例#4
0
        //public static readonly string postResource = "/playback";

        public PimpPlayer(SimplePimpSession s, PimpWebSocket webSocket, BasePlaylist playlist)
            : base(s, webSocket)
        {
            Playlist = playlist;
        }