From a93b1425c71da28641f92e462cbd5f3a7fda9c5c Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil@pynecone.io>
Date: Mon, 26 Dec 2022 23:14:35 -0800
Subject: [PATCH] Catch websocket disconnect (#184)

---
 pynecone/app.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/pynecone/app.py b/pynecone/app.py
index b437254a7..294703a57 100644
--- a/pynecone/app.py
+++ b/pynecone/app.py
@@ -4,6 +4,7 @@ from typing import Any, Callable, Coroutine, Dict, List, Optional, Tuple, Type,
 
 from fastapi import FastAPI, WebSocket
 from fastapi.middleware import cors
+from starlette.websockets import WebSocketDisconnect
 
 from pynecone import constants, utils
 from pynecone.base import Base
@@ -320,7 +321,11 @@ def _event(app: App):
         # Process events until the connection is closed.
         while True:
             # Get the event.
-            event = Event.parse_raw(await websocket.receive_text())
+            try:
+                event = Event.parse_raw(await websocket.receive_text())
+            except WebSocketDisconnect:
+                # Close the connection.
+                return
 
             # Process the event.
             update = await process(app, event)