Bug fixing

This commit is contained in:
anoshenko 2024-03-13 15:01:02 +03:00
parent ebcba7f9c2
commit 6c49f37f68
4 changed files with 39 additions and 92 deletions

View File

@ -169,47 +169,42 @@ func (app *application) postHandler(w http.ResponseWriter, req *http.Request) {
} }
command := obj.Tag() command := obj.Tag()
startSession := false
if session == nil { if session == nil || command == "startSession" {
switch command { events := make(chan DataObject, 1024)
case "startSession": bridge := createHttpBridge(req)
events := make(chan DataObject, 1024) response = bridge.response
bridge := createHttpBridge(req) answer := ""
response = bridge.response session, answer = app.startSession(obj, events, bridge, response)
answer := ""
session, answer = app.startSession(obj, events, bridge, response)
bridge.writeMessage(answer) bridge.writeMessage(answer)
session.onStart() session.onStart()
bridge.sendResponse() if command == "session-resume" {
session.onResume()
setSessionIDCookie(w, session.ID())
go sessionEventHandler(session, events, bridge)
default:
return
} }
bridge.sendResponse()
setSessionIDCookie(w, session.ID())
startSession = true
go sessionEventHandler(session, events, bridge)
} }
switch command { if !startSession {
case "startSession": switch command {
case "nop":
session.sendResponse()
case "nop": case "session-close":
session.sendResponse() session.onFinish()
/* session.App().removeSession(session.ID())
case "disconnect": return
session.onDisconnect()
return
*/
case "session-close":
session.onFinish()
session.App().removeSession(session.ID())
return
default: default:
if !session.handleAnswer(command, obj) { if !session.handleAnswer(command, obj) {
session.addToEventsQueue(obj) session.addToEventsQueue(obj)
}
} }
} }

View File

@ -17,59 +17,7 @@ window.onload = function() {
sendMessage( sessionInfo() ); sendMessage( sessionInfo() );
} }
/* window.onfocus = function() {
window.onload = function() {
socketUrl = document.location.protocol == "https:" ? "wss://" : "ws://"
socketUrl += document.location.hostname
const port = document.location.port
if (port) {
socketUrl += ":" + port
}
socketUrl += window.location.pathname + "ws"
socket = new WebSocket(socketUrl);
socket.onopen = socketOpen;
socket.onclose = socketClose;
socket.onerror = socketError;
socket.onmessage = function(event) {
window.execScript ? window.execScript(event.data) : window.eval(event.data);
};
};
function socketOpen() {
sendMessage( sessionInfo() );
}
function socketReopen() {
sendMessage( "reconnect{session=" + sessionID + "}" );
}
function socketReconnect() {
if (!socket) {
socket = new WebSocket(socketUrl);
socket.onopen = socketReopen;
socket.onclose = socketClose;
socket.onerror = socketError;
socket.onmessage = function(event) {
window.execScript ? window.execScript(event.data) : window.eval(event.data);
};
}
}
function socketClose(event) {
console.log("socket closed")
socket = null;
if (!event.wasClean && windowFocus) {
window.setTimeout(socketReconnect, 10000);
}
}
*/
function socketError(error) {
console.log(error);
}
window.onfocus = function(event) {
windowFocus = true windowFocus = true
sendMessage( "session-resume{session=" + sessionID +"}" ); sendMessage( "session-resume{}" );
} }

View File

@ -5,11 +5,11 @@ window.onresize = function() {
scanElementsSize(); scanElementsSize();
} }
window.onbeforeunload = function(event) { window.onbeforeunload = function() {
sendMessage( "session-close{session=" + sessionID +"}" ); sendMessage( "session-close{session=" + sessionID +"}" );
} }
window.onblur = function(event) { window.onblur = function() {
windowFocus = false windowFocus = false
sendMessage( "session-pause{session=" + sessionID +"}" ); sendMessage( "session-pause{session=" + sessionID +"}" );
} }

View File

@ -526,7 +526,9 @@ func (session *sessionData) htmlPropertyValue(htmlID, name string) string {
func (session *sessionData) handleAnswer(command string, data DataObject) bool { func (session *sessionData) handleAnswer(command string, data DataObject) bool {
switch command { switch command {
case "answer": case "answer":
session.bridge.answerReceived(data) if session.bridge != nil {
session.bridge.answerReceived(data)
}
case "imageLoaded": case "imageLoaded":
session.imageManager().imageLoaded(data) session.imageManager().imageLoaded(data)
@ -538,7 +540,9 @@ func (session *sessionData) handleAnswer(command string, data DataObject) bool {
return false return false
} }
session.bridge.sendResponse() if session.bridge != nil {
session.bridge.sendResponse()
}
return true return true
} }