Qual é a melhor maneira de detectar suporte a websocket usando Javascript?

Estou tentando usar o Javascript para detectar se um navegador da Web suporta websockets, mas usando apenas detecção baseada em recursos, estou obtendo falsos positivos, então adicionei um teste de agente de usuário para lançar dispositivos Android, o que não sou feliz com. Eu tenho um Samsung Galaxy Tab 2, e aqui está o meu código de detecção:

var isSupported = (("WebSocket" in window && window.WebSocket != undefined) ||
                   ("MozWebSocket" in window));

/* This line exists because my Galaxy Tab 2 would otherwise appear to have support. */
if (isSupported && navigator.userAgent.indexOf("Android") > 0)
  isSupported = false;

if (isSupported)
  document.write("Your browser supports websockets");
else
  document.write("Your browser does not support websockets");

Este código parece funcionar com o IE, Firefox, Safari (incluindo iPhone / iPad) e Chrome. No entanto, a verificação baseada em recursos está retornando true quando uso o navegador padrão do meu Samsung Galaxy Tab 2, o que é incorreto porque o navegador não suporta websockets. Além disso, não sei quantos outros dispositivos Android têm esse mesmo problema, então, no momento, essa é a melhor solução que conheço para detecção.

Existe uma maneira melhor de detectar suporte a websocket além do que estou fazendo? Eu percebo que existem soluções alternativas para o Android, como o uso de um navegador diferente, o que significa que o código de detecção do agente do usuário não é uma coisa boa. Meu objetivo é não ter que confiar no agente do usuário em primeiro lugar.

Alguma sugestão?

questionAnswers(5)

yourAnswerToTheQuestion