From 5783b78b08216d3fed26ed2f53051519fe2c415e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 8 Sep 2013 14:50:55 -0400 Subject: [PATCH] close web socket gracefully to reduce error messages in server log --- ApiClient.js | 26 ++++++++++++++++++-------- packages.config | 2 +- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/ApiClient.js b/ApiClient.js index 4bdd3f7795..66bf342488 100644 --- a/ApiClient.js +++ b/ApiClient.js @@ -2,7 +2,7 @@ window.MediaBrowser = {}; } -MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) { +MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, window) { /** * Creates a new api client instance @@ -27,6 +27,14 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) { var currentUserId; var webSocket; + $(window).on("beforeunload", function () { + + // Close the connection gracefully when possible + if (webSocket && webSocket.readyState === WebSocket.OPEN) { + webSocket.close(); + } + }); + /** * Gets the server host name. */ @@ -3419,15 +3427,17 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) { throw new Error("null itemId"); } - if (self.isWebSocketOpen()) { + // Always use the http api in case playback is stopped by closing the browser + // See window beforeunload event at the top of this file + //if (self.isWebSocketOpen()) { - var deferred = $.Deferred(); + // var deferred = $.Deferred(); - self.sendWebSocketMessage("PlaybackStopped", itemId + "|" + (positionTicks == null ? "" : positionTicks)); + // self.sendWebSocketMessage("PlaybackStopped", itemId + "|" + (positionTicks == null ? "" : positionTicks)); - deferred.resolveWith(null, []); - return deferred.promise(); - } + // deferred.resolveWith(null, []); + // return deferred.promise(); + //} var params = { }; @@ -3535,7 +3545,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) { }; } -}(jQuery, navigator, window.JSON, window.WebSocket, setTimeout); +}(jQuery, navigator, window.JSON, window.WebSocket, setTimeout, window); /** * Provides a friendly way to create an api client instance using information from the browser's current url diff --git a/packages.config b/packages.config index f111dfc5aa..21812f626b 100644 --- a/packages.config +++ b/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file