dongmale0656 2017-03-08 21:41 采纳率: 100%
浏览 4556
已采纳

WebSocket连接失败:连接建立错误:net :: ERR_SSL_PROTOCOL_ERROR

当我试图通过wss://连接到WebSocket时,我为什么会得到这个错误,但是在ws://上却没问题呢?

错误:

WebSocket connection failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR

代码:

package main

import (
    "fmt"
    "log"
    "net/http"
    //"encoding/json"
    "github.com/gorilla/websocket"
)

var clients map[*websocket.Conn]*Client

var upgrader = websocket.Upgrader{
    CheckOrigin : func(r *http.Request) bool{
        return true
    },
}

type Client struct{
    session_id  string
    block_id    uint
    module      string
}

func main(){
    var port uint = 8000

    http.HandleFunc("/", handleConnections)

    log.Printf("Websocket server started on: %d", port)
    err := http.ListenAndServe(fmt.Sprintf(":%d", port), nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

func handleConnections(w http.ResponseWriter, r *http.Request){
    //  Upgrade initial GET request to a websocket
    ws, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print(err)

        return
    }

    defer ws.Close()

    log.Print("Connection established to IP: ", r.RemoteAddr)

    ...
}
  • 写回答

1条回答 默认 最新

  • dragon87836215 2017-03-08 21:49
    关注

    Your server is only listening for HTTP connections so you should use ws when making a connection. wss is "WebSocket Secure" which really just means a WebSocket connection that is served over HTTPS (TLS)

    From the RFC 6455

    A |wss| URI identifies a WebSocket server and resource name and
    indicates that traffic over that connection is to be protected via
    TLS (including standard benefits of TLS such as data confidentiality
    and integrity and endpoint authentication).
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?