Oddly enough, I still read reports and emails of people saying that the site did not stream on their phone. I then began to debug more on the actual streaming. It seems that the AJAX calls we were making to our API were failing when they were requested over HTTPS. The Microsoft team states that it is a bug with IE8 that you cannot do AJAX calls through XDomainRequest to HTTPS pages from HTTP pages. They never bothered to fix it for IE9. The simple solution would be to just load the site in HTTPS and make all calls in HTTPS, however that is not possible right now, so I began to look for hacks to get around it. I tried making a Silverlight proxy but sadly, mobile Silverlight doesn’t support the HTML bridge needed for this. We only have 1 call to HTTPS on the site right now, but in the future, users will need to login and perform actions that require HTTPS, so this issue is quite the show-stopper.
The above issue aside, the audio tag on WP7 seemed to be making 2 requests to the audio URL and then wouldn’t play the song because the second request failed. Grooveshark does not allow a stream key to be used twice, so the second request will always fail. I spent 12 hours figuring out how to force WP7 to only make one request and in the end it came down to changing our stream endpoint from stream.php to stream.mp3. This is an easy change as we can just use a server-side rewrite to point stream.mp3 to stream.php.
In the end, we will not be supporting Windows Phone 7 until there is a solution for the HTTP<->HTTPS AJAX problem with IE9. Maybe with a future Windows Phone update the Internet Explorer team will finally fix the bug they acknowledged 2 years ago.blog comments powered by Disqus