1
0
mirror of https://github.com/kataras/iris.git synced 2026-01-09 13:05:56 +00:00
This commit is contained in:
Makis Maropoulos
2016-06-17 19:51:17 +03:00
parent 6544863edc
commit 5d369b7c73
4 changed files with 37 additions and 10 deletions

View File

@@ -5,3 +5,11 @@ This package is new and unique, if you notice a bug or issue [post it here](http
# How to use
[E-Book section](https://kataras.gitbooks.io/iris/content/package-websocket.html)
## Notes
On **OSX + Safari**, we had an issue which is **fixed** now. BUT by the browser's Engine Design the socket is not closed until the whole browser window is closed,
so the **connection.OnDisconnect** event will fire when the user closes the **window browser**, **not just the browser's tab**.
- Relative issue: https://github.com/kataras/iris/issues/175

View File

@@ -94,6 +94,22 @@ func (c *connection) writer() {
select {
case msg, ok := <-c.send:
if !ok {
defer func() {
// FIX FOR: https://github.com/kataras/iris/issues/175
// AS I TESTED ON TRIDENT ENGINE (INTERNET EXPLORER/SAFARI):
// NAVIGATE TO SITE, CLOSE THE TAB, NOTHING HAPPENS
// CLOSE THE WHOLE BROWSER, THEN THE c.conn is NOT NILL BUT ALL ITS FUNCTIONS PANICS, MEANS THAT IS THE STRUCT IS NOT NIL BUT THE WRITER/READER ARE NIL
// THE ONLY SOLUTION IS TO RECOVER HERE AT ANY PANIC
// THE FRAMETYPE = 8, c.closeSend = true
// NOTE THAT THE CLIENT IS NOT DISCONNECTED UNTIL THE WHOLE WINDOW BROWSER CLOSED, this is engine's bug.
//
if err := recover(); err != nil {
ticker.Stop()
c.server.free <- c
c.underline.Close()
}
}()
c.write(websocket.CloseMessage, []byte{})
return
}