mirror of
https://github.com/kataras/iris.git
synced 2025-03-15 05:26:26 +01:00
fix websocket some times tries to emit to a disconnected client
Former-commit-id: 026798e6bc587c902bfc9f92281aced406d628a5
This commit is contained in:
parent
87d0f2e967
commit
e23f821341
|
@ -34,6 +34,10 @@ func (e *emitter) EmitMessage(nativeMessage []byte) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *emitter) Emit(event string, data interface{}) error {
|
func (e *emitter) Emit(event string, data interface{}) error {
|
||||||
|
if e.conn.server.rooms[e.to] == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
message, err := websocketMessageSerialize(event, data)
|
message, err := websocketMessageSerialize(event, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -260,8 +260,9 @@ func (s *Server) LeaveAll(connID string) {
|
||||||
// fire the on room leave connection's listeners
|
// fire the on room leave connection's listeners
|
||||||
s.connections.get(connID).fireOnLeave(name)
|
s.connections.get(connID).fireOnLeave(name)
|
||||||
// the connection is inside this room, lets remove it
|
// the connection is inside this room, lets remove it
|
||||||
s.rooms[name][i] = s.rooms[name][len(s.rooms[name])-1]
|
if i < len(s.rooms[name]) {
|
||||||
s.rooms[name] = s.rooms[name][:len(s.rooms[name])-1]
|
s.rooms[name] = append(s.rooms[name][:i], s.rooms[name][i+1:]...)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -287,8 +288,7 @@ func (s *Server) leave(roomName string, connID string) (left bool) {
|
||||||
if s.rooms[roomName] != nil {
|
if s.rooms[roomName] != nil {
|
||||||
for i := range s.rooms[roomName] {
|
for i := range s.rooms[roomName] {
|
||||||
if s.rooms[roomName][i] == connID {
|
if s.rooms[roomName][i] == connID {
|
||||||
s.rooms[roomName][i] = s.rooms[roomName][len(s.rooms[roomName])-1]
|
s.rooms[roomName] = append(s.rooms[roomName][:i], s.rooms[roomName][i+1:]...)
|
||||||
s.rooms[roomName] = s.rooms[roomName][:len(s.rooms[roomName])-1]
|
|
||||||
left = true
|
left = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user