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

View File

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

View File

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