import WebSocket from "ws";
const ws = new WebSocket(
"wss://gampushws.sgla16.com/gam-shoveler-svcv1/ws?uid=04672712182661387",
{
headers: {
Origin: "https://casino.bet365.bet.br",
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36"
}
}
);
ws.on("open", () => {
console.log("conectado");
ws.send(JSON.stringify({
op:"sub",
tp:"unified_livedealer_25_brl"
}));
});
ws.on("message", (msg) => {
console.log(msg.toString());
});
Entendi - a conexao e muito mais simples do que eu fiz. Deixa eu reescrever seguindo exatamente isso.
O codigo ja ta quase igual ao que voce mandou. O problema e que eu estou mandando 4 subscriptions com delay, quando o que funciona e so UMA: unified_livedealer_25_brl. Vou simplificar:
Agora vou adicionar mais logs na mensagem recebida pra entendermos o que chega do WS:
Simplifiquei o WebSocket para enviar apenas a subscription unified_livedealer_25_brl (sem delay, sem as outras 3 subscriptions desnecessarias) exatamente como no codigo que voce mandou. Tambem adicionei log da mensagem raw recebida pra vermos no console se os dados estao chegando do WS corretamente.
Vou seguir o documento exatamente: backend WebSocket proxy + frontend polling simples. Sem SSE. Deixa eu ler tudo que existe primeiro.
O problema e claro nos logs: Unexpected server response: 403 - o WebSocket direto no Bet365 esta bloqueando a conexao vinda do servidor Vercel (Cloudflare bloqueia por IP/datacenter).
A solucao e usar uma abordagem hibrida: o WebSocket nao vai funcionar do Vercel serverless. Vou usar a REST API (https://api-catalogador.automagroup.com.br/roleta_brasileira) que voce mesmo forneceu inicialmente como fonte de dados - essa sim funciona - combinada com polling rapido. Vou simplificar tudo:
You can send messages while the preview loads