Skip to content

Instantly share code, notes, and snippets.

@FelipeGrijo
Last active March 13, 2025 15:59
Show Gist options
  • Save FelipeGrijo/b73cbfbaaf3a09fe74e8c2d9dcd6bb94 to your computer and use it in GitHub Desktop.
Save FelipeGrijo/b73cbfbaaf3a09fe74e8c2d9dcd6bb94 to your computer and use it in GitHub Desktop.

Como Usar

  • Instale o Tampermonkey no Chrome ou Firefox
  • Clique no botão "Raw" ou clique aqui pra instalar o userscript de forma automática

Você também pode clicar no ícone do Tampermonkey, "Adicionar novo script...", colar o conteúdo e depois salvar (CTRL+S)

// ==UserScript==
// @name Ping WebSocket
// @namespace https://gist.github.com/FelipeGrijo
// @version 1.0
// @description Intercepta o WebSocket e envia mensagens de ping a cada x segundos para manter a conexão aberta
// @author Felipe Grijó
// @match https://live-chat.stg-eks.descomplica.com.br/chat*
// @icon https://icons.duckduckgo.com/ip2/descomplica.com.br.ico
// @grant none
// @run-at document-start
// ==/UserScript==
(() => {
const PING_INTERVAL_MS = 30 * 1000;
const OriginalWebSocket = window.WebSocket;
function websocket(url, protocols = []) {
const ws = new OriginalWebSocket(url, protocols);
let pingInterval = null;
ws.addEventListener('open', () => {
pingInterval = setInterval(() => {
ws.send(JSON.stringify({ type: 'PING' }));
}, PING_INTERVAL_MS);
});
ws.addEventListener('close', () => clearInterval(pingInterval));
return ws;
}
window.WebSocket = websocket;
window.WebSocket.prototype = OriginalWebSocket.prototype;
window.WebSocket.CONNECTING = OriginalWebSocket.CONNECTING;
window.WebSocket.OPEN = OriginalWebSocket.OPEN;
window.WebSocket.CLOSING = OriginalWebSocket.CLOSING;
window.WebSocket.CLOSED = OriginalWebSocket.CLOSED;
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment