From 11a56df2cb2575ac89bc25baa83a246021809135 Mon Sep 17 00:00:00 2001
From: "J. Nick Koston" <nick@koston.org>
Date: Wed, 28 Apr 2021 05:55:18 -1000
Subject: [PATCH] Serialize websocket messages before placing them in the queue
 (#49582)

---
 homeassistant/components/websocket_api/http.py | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/homeassistant/components/websocket_api/http.py b/homeassistant/components/websocket_api/http.py
index 27af0424f3c..a84db598fdc 100644
--- a/homeassistant/components/websocket_api/http.py
+++ b/homeassistant/components/websocket_api/http.py
@@ -74,11 +74,7 @@ class WebSocketHandler:
                 if message is None:
                     break
 
-                if not isinstance(message, str):
-                    message = message_to_json(message)
-
                 self._logger.debug("Sending %s", message)
-
                 await self.wsock.send_str(message)
 
         # Clean up the peaker checker when we shut down the writer
@@ -94,6 +90,9 @@ class WebSocketHandler:
 
         Async friendly.
         """
+        if not isinstance(message, str):
+            message = message_to_json(message)
+
         try:
             self._to_write.put_nowait(message)
         except asyncio.QueueFull: