go - server-sent events Golang -


i 1 way streaming of data , experimenting sse vs websockets.

using sse form golang server i'm finding confusing on how notify client when sessions finished. (eg server has finished sending events or server goes offline or client looses connectivity)

one thing need reliably know when these disconnect situations. without using timeouts etc. experiments far , when take server offline client gets eof. i'm having trouble trying figure out how signal server client connection closed / finished , how handle / read it? eof reliable way determine closed / error / finished state?

many of examples sse fail show client client connection handling.

would easier websockets?

any experiences suggestions appreciated.

thanks

the sse standard requires browser reconnect, automatically, after n seconds, if connection lost or if server deliberately closes socket. (n defaults 5 in firefox, 3 in chrome , safari, last time checked.) so, if desirable, don't need anything. (in websockets have implement kind of reconnect yourself.)

if kind of reconnect not desirable, should instead send message client, saying "the show over, go away". e.g. if streaming financial data, might send on friday evening, when markets shut. client should intercept message , close connection side. (the socket disappear, server process automatically closed.)

in javascript, , assuming using json send data, like:

var es = eventsource("/datasource"); es.addeventlistener("message", function(e){   var d = json.parse(e.data);   if(d.shutdownrequest){     es.close();     es=null;     //tell user happened.     }   else{     //normal processing here     }   },false); 

update:

you can find out when reconnects happening, listening "close" event, looking @ e.target.readystate

es.addeventlistener("error", handleerror, false); function handleerror(e){   if(e.target.readystate == 0)console.log("reconnecting...");   if(e.target.readystate == 2)console.log("giving up.");   } 

no other information available, more importantly cannot tell difference between server process deliberately closing connection, web server crashing, or client's internet connection going down.

one other thing can customize retry time, having the server send retry:nn message. if don't want quick reconnections, instead want @ least 60 seconds between reconnect attempts have server send retry:60.


Comments

Popular posts from this blog

How to provide Authorization & Authentication using Asp.net, C#? -

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

How to use Authorization & Authentication in Asp.net, C#? -