Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Added isValid connection health check - #264

Open
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck
Open

Added isValid connection health check#264
he-is-harry wants to merge 1 commit into
SAP:masterfrom
he-is-harry:connHealthCheck

Conversation

@he-is-harry

Copy link
Copy Markdown
Contributor
  • Added initial isValid(timeout) check which will return true if the client can send a request to the server and receive a reply within the timeout
    • timeout is given in seconds
    • The API's implementation can be updated once the ping protocol support is complete on the server side
  • Updated Connection.send so that it can accept a communicationTimeout option to timeout a request to the server and return a timeout error
  • Added unit and integration tests for isValid

- Added initial isValid(timeout) check which will return true if the
client can send a request to the server and receive a reply within
the timeout
- timeout is given in seconds
- Updated Connection.send so that it can accept a communicationTimeout
option to timeout a request to the server and return a timeout error
- Added unit and integration tests for isValid
@he-is-harry

he-is-harry commented Apr 25, 2025

Copy link
Copy Markdown
ContributorAuthor

Here is a rough draft for the reconnect on timeout change: he-is-harry@bcdd7e0.

TODOs:

  • Testing, the change is a rough draft so little cases were tested, so several more tests should be run to check that the queue always runs the newly enqueue tasks
    • Things to try: Multiple reconnects, affect of reconnect on transaction, pending tasks should currently receive an error in callback after timeout in current task
  • Investigate the connection properties that should be used for reconnect (maybe _redirectHost / _redirectPort is better?)
  • Adding a connection readyState for the 'ready for reconnect' state after timeouts would be helpful
  • Currently reconnect does not support redirection, perhaps there should be an integration with ConnectionManager
    • The Client and ConnectionManager connect code could be moved into Connection as a refactoring change
  • The added Connection.reset function can be refactored to reduce duplicate code in Connection constructor
  • Packet count check can be removed

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@he-is-harry