Kann programmgesteuert überprüft werden, ob eine WebSocket-Verbindung mit einer 403-Antwort fehlgeschlagen ist? Zum Beispiel mit dem folgenden Servercode:Ist es möglich, nach WebSocket 403-Antworten zu suchen?
package main
import (
"errors"
"io"
"log"
"net/http"
"golang.org/x/net/websocket"
)
func main() {
handler := websocket.Handler(func(ws *websocket.Conn) {
io.Copy(ws, ws)
})
handshake := func(conf *websocket.Config, req *http.Request) error {
if req.URL.Path == "/sekret" {
return nil
}
return errors.New("Oops!")
}
server := &websocket.Server{
Handshake: handshake,
Handler: handler,
}
log.Fatal(http.ListenAndServe(":8080", server))
}
und die folgenden Beispiels JS-Verbindung, die eine 403-Antwort auslöst:
var ws = new WebSocket("ws://localhost:8080/something");
ws.onerror = console.log;
Die Fehlerreaktion ist ein Event
mit Typ "error"
. Auf der anderen Seite löst der folgende JS-Code ein net::ERR_CONNECTION_REFUSED
(zumindest auf Chrom):
var ws = new WebSocket("ws://localhost:8081/something");
ws.onerror = console.log;
Das Fehlerereignisobjekt das gleiche fast genau aussieht. Gibt es eine Möglichkeit, Fehlertypen in WebSocket-Verbindungen von der Clientseite zu unterscheiden? (Ich bin für 403 Antworten speziell auf der Suche, so kann ich den Benutzer alarmieren besondere Maßnahmen zu ergreifen.)