mirror of
https://github.com/kataras/iris.git
synced 2025-03-14 08:36:28 +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 {
|
||||
if e.conn.server.rooms[e.to] == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
message, err := websocketMessageSerialize(event, data)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -260,8 +260,9 @@ func (s *Server) LeaveAll(connID string) {
|
|||
// fire the on room leave connection's listeners
|
||||
s.connections.get(connID).fireOnLeave(name)
|
||||
// the connection is inside this room, lets remove it
|
||||
s.rooms[name][i] = s.rooms[name][len(s.rooms[name])-1]
|
||||
s.rooms[name] = s.rooms[name][:len(s.rooms[name])-1]
|
||||
if i < len(s.rooms[name]) {
|
||||
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 {
|
||||
for i := range s.rooms[roomName] {
|
||||
if s.rooms[roomName][i] == connID {
|
||||
s.rooms[roomName][i] = s.rooms[roomName][len(s.rooms[roomName])-1]
|
||||
s.rooms[roomName] = s.rooms[roomName][:len(s.rooms[roomName])-1]
|
||||
s.rooms[roomName] = append(s.rooms[roomName][:i], s.rooms[roomName][i+1:]...)
|
||||
left = true
|
||||
break
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user