Non sono sicuro di quale sia l'API socket che accede a un oggetto Flash, ma ci sono ottimi motivi per non consentire il semplice TCP o UDP (molto meno qualsiasi altro tipo di) socket in JavaScript.
Il più grande, probabilmente, è che stai fondamentalmente fornendo un modo per bypassare i firewall se lo fai. Ogni servizio sulla tua macchina in ascolto su socket di rete loopback, normalmente irraggiungibile da parte di aggressori esterni, può ora essere attaccato dal browser. A ogni computer della tua rete, normalmente isolato da Internet dal tuo gateway e dal tuo firewall, ora puoi accedere o essere attaccato dal codice Internet.
Ci sono anche altre ragioni. La scansione delle porte e gli attacchi DDOS diventano molto più semplici quando i browser possono eseguirli senza un plug-in ( sì, i browser possono tentare di avviare DDOS su server HTTP (S), ma potrebbero essere molto più efficienti con i socket di livello inferiore ). I worm di rete (in particolare quelli a cui è vulnerabile solo una piccola percentuale di macchine) possono propagarsi molto più velocemente quando tutti coloro che visualizzano un annuncio su un sito web popolare inizia a inviare attacchi, anziché solo quelli che vengono effettivamente infettati.
I Websocket esistono per dare un modo di fare comunicazione socket con elementi che desiderano esplicitamente comunicare con un browser che esegue codice non affidabile. Il tipico server Internet è altrettanto resistente, aspettandosi client maligni di tutte le strisce. Il problema deriva da servizi che non si aspettano traffico dannoso, perché sono raggiungibili solo dai client fidati. Le prese controllate da JS lo spezzerebbero completamente.