bugfixing websocket
This commit is contained in:
parent
7479a6810c
commit
1d0e18e56f
@ -188,7 +188,7 @@
|
|||||||
|
|
||||||
socket.addEventListener("open", () => {
|
socket.addEventListener("open", () => {
|
||||||
console.log("WebSocket connection opened");
|
console.log("WebSocket connection opened");
|
||||||
// Initial connection send
|
// Send only current watchlist symbols
|
||||||
const tickerList = watchList?.map((item) => item?.symbol) || [];
|
const tickerList = watchList?.map((item) => item?.symbol) || [];
|
||||||
sendMessage(tickerList);
|
sendMessage(tickerList);
|
||||||
});
|
});
|
||||||
@ -200,6 +200,7 @@
|
|||||||
if (newList?.length > 0) {
|
if (newList?.length > 0) {
|
||||||
//console.log("Received message:", newList);
|
//console.log("Received message:", newList);
|
||||||
watchList = calculateChange(watchList, newList);
|
watchList = calculateChange(watchList, newList);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
watchList = watchList?.map((item) => ({
|
watchList = watchList?.map((item) => ({
|
||||||
...item,
|
...item,
|
||||||
@ -577,29 +578,53 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
let previousList = [];
|
let previousList = [];
|
||||||
|
let reconnectionTimeout;
|
||||||
afterUpdate(async () => {
|
afterUpdate(async () => {
|
||||||
|
// Compare only the symbols to detect changes
|
||||||
|
const currentSymbols = watchList?.map((item) => item?.symbol).sort();
|
||||||
|
const previousSymbols = previousList?.map((item) => item?.symbol).sort();
|
||||||
|
|
||||||
|
// Check if symbols have changed
|
||||||
if (
|
if (
|
||||||
JSON?.stringify(previousList) !== JSON?.stringify(watchList) &&
|
JSON.stringify(currentSymbols) !== JSON.stringify(previousSymbols) &&
|
||||||
typeof socket !== "undefined"
|
typeof socket !== "undefined"
|
||||||
) {
|
) {
|
||||||
|
// Update previous list
|
||||||
previousList = watchList;
|
previousList = watchList;
|
||||||
socket?.close();
|
|
||||||
await new Promise((resolve, reject) => {
|
try {
|
||||||
socket?.addEventListener("close", resolve);
|
// Close existing socket if open
|
||||||
|
if (socket && socket.readyState !== WebSocket.CLOSED) {
|
||||||
|
socket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait for socket to close
|
||||||
|
await new Promise((resolve) => {
|
||||||
|
socket.addEventListener("close", resolve, { once: true });
|
||||||
});
|
});
|
||||||
|
|
||||||
if (socket?.readyState === WebSocket?.CLOSED) {
|
// Reconnect with new symbols
|
||||||
|
if ($isOpen) {
|
||||||
await websocketRealtimeData();
|
await websocketRealtimeData();
|
||||||
console.log("connecting again");
|
console.log("WebSocket restarted due to watchlist changes");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error restarting WebSocket:", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
onDestroy(() => {
|
onDestroy(() => {
|
||||||
try {
|
try {
|
||||||
//socket?.send('close')
|
// Clear any pending reconnection timeout
|
||||||
socket?.close();
|
if (reconnectionTimeout) {
|
||||||
|
clearTimeout(reconnectionTimeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close the WebSocket connection
|
||||||
|
if (socket) {
|
||||||
|
socket.close(1000, "Page unloaded");
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user