Задать вопрос
VGrabko
@VGrabko
Golang, Php, Js

Почему не работает ws?

Не выходит сконектится с ws сервером. В лог пишет upgrade:websocket: origin not allowed

Сервер
package main

import (
	"log"
	"net/http"

	"github.com/gorilla/websocket"
	"github.com/julienschmidt/httprouter"
)

func main() {
	router := httprouter.New()
	router.GET("/sdk/ws/", EventsWSHandler)
	//router.GET("/sdk/ajax/", EventsWSHandler)
	//router.GET("/sdk/jsonp/", EventsWSHandler)
	log.Fatal(http.ListenAndServe(":8080", router))

}

var upgrader = websocket.Upgrader{}

func EventsWSHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {

	c, err := upgrader.Upgrade(w, r, nil)
	if err != nil {
		log.Print("upgrade:", err)
		return
	}
	defer c.Close()
	for {
		mt, message, err := c.ReadMessage()
		if err != nil {
			log.Println("read:", err)
			break
		}
		log.Printf("recv: %s", message)

		err = c.WriteMessage(mt, message)
		if err != nil {
			log.Println("write:", err)
			break
		}
	}
}

клиент
var connection = new WebSocket('ws://localhost:8080/sdk/ws/');
                connection.onopen = function () {
                    console.log('Connection open!');

                    connection.send(JSON.stringify({
                        "event": "PageSkeleton",
                        "data": false
                    }));

                };
                connection.onclose = function () {
                    console.log('Connection closed');
                };
                connection.onerror = function (error) {
                    console.log('Error detected: ' + error);
                };
                connection.onmessage = function (e) {
                    var t = JSON.parse(e.data);
                    Events.Call(t["event"], t["data"])
                    console.log(t);
                };
  • Вопрос задан
  • 2474 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
0xcffaedfe
@0xcffaedfe
Developer & Reverser
var upgrader = websocket.Upgrader{
    CheckOrigin: func(r *http.Request) bool {
        return true
    },
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы