No state No Websocket (#1950)

This commit is contained in:
Elijah Ahianyo 2023-10-13 21:54:59 +00:00 committed by GitHub
parent 024cb5fa9b
commit 433ccda3a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 36 deletions

View File

@ -507,7 +507,8 @@ export const useEventLoop = (
if (!router.isReady) { if (!router.isReady) {
return; return;
} }
// only use websockets if state is present
if (Object.keys(state).length > 0) {
// Initialize the websocket connection. // Initialize the websocket connection.
if (!socket.current) { if (!socket.current) {
connect(socket, dispatch, ['websocket', 'polling'], setConnectError, client_storage) connect(socket, dispatch, ['websocket', 'polling'], setConnectError, client_storage)
@ -518,6 +519,7 @@ export const useEventLoop = (
await processEvent(socket.current) await processEvent(socket.current)
} }
})() })()
}
}) })
return [state, addEvents, connectError] return [state, addEvents, connectError]
} }

View File

@ -175,6 +175,7 @@ class App(Base):
self.add_cors() self.add_cors()
self.add_default_endpoints() self.add_default_endpoints()
if self.state is not DefaultState:
# Set up the Socket.IO AsyncServer. # Set up the Socket.IO AsyncServer.
self.sio = AsyncServer( self.sio = AsyncServer(
async_mode="asgi", async_mode="asgi",

View File

@ -14,6 +14,7 @@ import pytest
from plotly.graph_objects import Figure from plotly.graph_objects import Figure
import reflex as rx import reflex as rx
from reflex.app import App
from reflex.base import Base from reflex.base import Base
from reflex.constants import CompileVars, RouteVar, SocketEvent from reflex.constants import CompileVars, RouteVar, SocketEvent
from reflex.event import Event, EventHandler from reflex.event import Event, EventHandler
@ -1528,23 +1529,24 @@ async def test_state_manager_lock_expire_contend(
@pytest.fixture(scope="function") @pytest.fixture(scope="function")
def mock_app(monkeypatch, app: rx.App, state_manager: StateManager) -> rx.App: def mock_app(monkeypatch, state_manager: StateManager) -> rx.App:
"""Mock app fixture. """Mock app fixture.
Args: Args:
monkeypatch: Pytest monkeypatch object. monkeypatch: Pytest monkeypatch object.
app: An app.
state_manager: A state manager. state_manager: A state manager.
Returns: Returns:
The app, after mocking out prerequisites.get_app() The app, after mocking out prerequisites.get_app()
""" """
app = App(state=TestState)
app_module = Mock() app_module = Mock()
setattr(app_module, CompileVars.APP, app) setattr(app_module, CompileVars.APP, app)
app.state = TestState app.state = TestState
app.state_manager = state_manager app.state_manager = state_manager
assert app.event_namespace is not None app.event_namespace.emit = AsyncMock() # type: ignore
app.event_namespace.emit = AsyncMock()
monkeypatch.setattr(prerequisites, "get_app", lambda: app_module) monkeypatch.setattr(prerequisites, "get_app", lambda: app_module)
return app return app