El título es básicamente la pregunta que tengo. Estaba desarrollando mi servidor Go y agregué la biblioteca gorilla/ws al punto final http://qwerty:1234/api/ws para manejar las solicitudes de actualización de conexión.
Este punto final tiene un middleware antes que valida el token de portador del encabezado Auth.
Durante el desarrollo, pude personalizar la solicitud de conexión de WS en Postman para incluir el encabezado Auth. Y se conectó con éxito al punto final de WS.
Soy nuevo en WS. Y traté de desarrollar la conexión WS del lado del cliente, no puedes agregar encabezados.
¿Hay alguna solución para hacer lo que estoy intentando? ¿O hay alguna manera de emular lo que hace Postman? ¿Hay una biblioteca Javascript WS que pueda usar para hacer lo que estoy intentando?
código del servidor
// Router r.Route("/api", func(r chi.Router) { r.Group(func(r chi.Router) { r.Use(utils.AuthMiddleware) r.Get("/contacts", controller.GetContacts) r.Get("/ws", websocket.Handler) r.Get("/ws/clients", websocket.TestHandler) // Socket connection upgrade func Handler(w http.ResponseWriter, r *http.Request) { userDetails := r.Context().Value("userDetails").(jwt.MapClaims) // Populated by middleware userId := int64(userDetails["UserId"].(float64)) if _, userPresent := wsClientsById[userId]; userPresent { http.Error(w, "User already connected", http.StatusForbidden) return } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { http.Error(w, "Error establishing Websocket connection", http.StatusInternalServerError) fmt.Println(err) return } conn.SetReadLimit(4096) wsClientsById[userId] = conn wsClientsByConn[conn] = userId go wsConnHandler(conn) }