Почему закрывается соединение по webscoket?

На странице А устанавливается соединение по webscoket . Теперь, когда я перехожу на страницу Б, которая тоже устанавливает соединение по webscoket, у меня падает сервер с ошибкой websocket: close 1001 (going away).
В консоли в браузере выдает "failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED"
код js
var socket = new WebSocket("ws://localhost:8080/ws" );
socket.onmessage = function (event) {
    DownloadScene(event)
}
socket.onclose =function (err){
    console.log(err)
}
socket.onerror = function(error) {
    console.log('WebSocket Error: ' + error);
}
function DownloadScene(event) {
    var data = JSON.parse(event.data)
    document.getElementById(data.id).innerHTML = data.body;
}
function  loadScene(scene) {
    var page = {
        query_type:"loadScene",
        data : {temp:scene}
    }
    var event = JSON.stringify(page);
    socket.send(event);
}

Код сверху я использую так же на странице Б. Как сделать так что бы он снова подключился ?
Обработчик сверху :
func WebSocketConnect(w http.ResponseWriter,r *http.Request)  {
	conn,err := upGrader.Upgrade(w, r, nil)
	//defer conn.Close()
	if err != nil {
		log.Println("here")
		log.Println(err)

	}

		webSocketHandler(conn)

}
func webSocketHandler(conn *websocket.Conn) {

	println("new connect")
	err := conn.ReadJSON(&query)
	if err != nil {
		log.Fatal(err)
		return
	}
	switch query.QueryType {
	case model.LoadSceneQuery :
		err := json.Unmarshal(query.Data,&frame)
		if err!= nil{
			log.Fatal(err)
		}
		LoadFrame(frame.Temp,conn,nil)
	case model.LoadFrameQuery:
		break
	}
}

Мне кажется нужен скрипт который запускал бы соединение снова, но в js я не могу(.
  • Вопрос задан
  • 3661 просмотр
Решения вопроса 1
@Nube Автор вопроса
Решение оказалось простым), нужно заменить log.Fatal(err) на log.Println(err) или на что нить другое. Каждый раз когда перезагружается страница соединение по websocket закрывается, поэтому websocket: close 1001 (going away). это норма ).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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