No state No Websocket (#1950)
This commit is contained in:
parent
024cb5fa9b
commit
433ccda3a6
@ -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]
|
||||||
}
|
}
|
||||||
|
@ -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",
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user