2
WebSocket接続が403応答で失敗したかどうかをプログラムで確認することはできますか?例えば、次のサーバーのコードで:WebSocket 403の応答を確認することはできますか?
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))
}
及び403の応答をトリガする次のサンプルJS接続:
var ws = new WebSocket("ws://localhost:8080/something");
ws.onerror = console.log;
エラー応答がタイプ"error"
とEvent
あります。一方、次のJSコードはnet::ERR_CONNECTION_REFUSED
(少なくともChromeで)をトリガに:
var ws = new WebSocket("ws://localhost:8081/something");
ws.onerror = console.log;
エラーイベントオブジェクトはほとんど同じに見えます。 WebSocket接続のエラータイプをクライアント側から区別する方法はありますか? (私は、特に403の応答を探していますので、私は特別な行動を取るようにユーザーに警告することができます。)