|
@@ -1167,14 +1167,14 @@ class Gui:
|
|
}
|
|
}
|
|
)
|
|
)
|
|
|
|
|
|
- def __send_ws(self, payload: dict, allow_grouping=True) -> None:
|
|
|
|
|
|
+ def __send_ws(self, payload: dict, allow_grouping=True, send_back_only=False) -> None:
|
|
grouping_message = self.__get_message_grouping() if allow_grouping else None
|
|
grouping_message = self.__get_message_grouping() if allow_grouping else None
|
|
if grouping_message is None:
|
|
if grouping_message is None:
|
|
try:
|
|
try:
|
|
self._server._ws.emit(
|
|
self._server._ws.emit(
|
|
"message",
|
|
"message",
|
|
payload,
|
|
payload,
|
|
- to=self.__get_ws_receiver(),
|
|
|
|
|
|
+ to=self.__get_ws_receiver(send_back_only),
|
|
)
|
|
)
|
|
time.sleep(0.001)
|
|
time.sleep(0.001)
|
|
except Exception as e: # pragma: no cover
|
|
except Exception as e: # pragma: no cover
|
|
@@ -1193,7 +1193,11 @@ class Gui:
|
|
def __send_ack(self, ack_id: t.Optional[str]) -> None:
|
|
def __send_ack(self, ack_id: t.Optional[str]) -> None:
|
|
if ack_id:
|
|
if ack_id:
|
|
try:
|
|
try:
|
|
- self._server._ws.emit("message", {"type": _WsType.ACKNOWLEDGEMENT.value, "id": ack_id})
|
|
|
|
|
|
+ self._server._ws.emit(
|
|
|
|
+ "message",
|
|
|
|
+ {"type": _WsType.ACKNOWLEDGEMENT.value, "id": ack_id},
|
|
|
|
+ to=self.__get_ws_receiver(True),
|
|
|
|
+ )
|
|
time.sleep(0.001)
|
|
time.sleep(0.001)
|
|
except Exception as e: # pragma: no cover
|
|
except Exception as e: # pragma: no cover
|
|
_warn(f"Exception raised in WebSocket communication (send ack) in '{self.__frame.f_code.co_name}'", e)
|
|
_warn(f"Exception raised in WebSocket communication (send ack) in '{self.__frame.f_code.co_name}'", e)
|
|
@@ -1208,7 +1212,10 @@ class Gui:
|
|
)
|
|
)
|
|
|
|
|
|
def __send_ws_download(self, content: str, name: str, on_action: str) -> None:
|
|
def __send_ws_download(self, content: str, name: str, on_action: str) -> None:
|
|
- self.__send_ws({"type": _WsType.DOWNLOAD_FILE.value, "content": content, "name": name, "onAction": on_action})
|
|
|
|
|
|
+ self.__send_ws(
|
|
|
|
+ {"type": _WsType.DOWNLOAD_FILE.value, "content": content, "name": name, "onAction": on_action},
|
|
|
|
+ send_back_only=True,
|
|
|
|
+ )
|
|
|
|
|
|
def __send_ws_alert(self, type: str, message: str, system_notification: bool, duration: int) -> None:
|
|
def __send_ws_alert(self, type: str, message: str, system_notification: bool, duration: int) -> None:
|
|
self.__send_ws(
|
|
self.__send_ws(
|
|
@@ -1272,13 +1279,15 @@ class Gui:
|
|
client_id,
|
|
client_id,
|
|
)
|
|
)
|
|
|
|
|
|
- def __get_ws_receiver(self) -> t.Union[t.List[str], t.Any, None]:
|
|
|
|
|
|
+ def __get_ws_receiver(self, send_back_only=False) -> t.Union[t.List[str], t.Any, None]:
|
|
if self._bindings()._is_single_client():
|
|
if self._bindings()._is_single_client():
|
|
return None
|
|
return None
|
|
sid = getattr(request, "sid", None) if request else None
|
|
sid = getattr(request, "sid", None) if request else None
|
|
sids = self.__get_sids(self._get_client_id())
|
|
sids = self.__get_sids(self._get_client_id())
|
|
if sid:
|
|
if sid:
|
|
sids.add(sid)
|
|
sids.add(sid)
|
|
|
|
+ if send_back_only:
|
|
|
|
+ return sid
|
|
return list(sids)
|
|
return list(sids)
|
|
|
|
|
|
def __get_sids(self, client_id: str) -> t.Set[str]:
|
|
def __get_sids(self, client_id: str) -> t.Set[str]:
|