mirror of
https://github.com/kataras/iris.git
synced 2025-02-02 15:30:36 +01:00
add websocket/Connection#IsJoined as requested at https://github.com/kataras/iris/issues/895
Former-commit-id: 560fc8b911a9c1352be577d2f7bebd1fac7b5d4a
This commit is contained in:
parent
711e48d9ab
commit
e523d08cb1
|
@ -174,6 +174,9 @@ type (
|
||||||
On(string, MessageFunc)
|
On(string, MessageFunc)
|
||||||
// Join registers this connection to a room, if it doesn't exist then it creates a new. One room can have one or more connections. One connection can be joined to many rooms. All connections are joined to a room specified by their `ID` automatically.
|
// Join registers this connection to a room, if it doesn't exist then it creates a new. One room can have one or more connections. One connection can be joined to many rooms. All connections are joined to a room specified by their `ID` automatically.
|
||||||
Join(string)
|
Join(string)
|
||||||
|
// IsJoined returns true when this connection is joined to the room, otherwise false.
|
||||||
|
// It Takes the room name as its input parameter.
|
||||||
|
IsJoined(roomName string) bool
|
||||||
// Leave removes this connection entry from a room
|
// Leave removes this connection entry from a room
|
||||||
// Returns true if the connection has actually left from the particular room.
|
// Returns true if the connection has actually left from the particular room.
|
||||||
Leave(string) bool
|
Leave(string) bool
|
||||||
|
@ -506,6 +509,10 @@ func (c *connection) Join(roomName string) {
|
||||||
c.server.Join(roomName, c.id)
|
c.server.Join(roomName, c.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *connection) IsJoined(roomName string) bool {
|
||||||
|
return c.server.IsJoined(roomName, c.id)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *connection) Leave(roomName string) bool {
|
func (c *connection) Leave(roomName string) bool {
|
||||||
return c.server.Leave(roomName, c.id)
|
return c.server.Leave(roomName, c.id)
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,6 +256,28 @@ func (s *Server) join(roomName string, connID string) {
|
||||||
s.rooms[roomName] = append(s.rooms[roomName], connID)
|
s.rooms[roomName] = append(s.rooms[roomName], connID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsJoined reports if a specific room has a specific connection into its values.
|
||||||
|
// First parameter is the room name, second is the connection's id.
|
||||||
|
//
|
||||||
|
// It returns true when the "connID" is joined to the "roomName".
|
||||||
|
func (s *Server) IsJoined(roomName string, connID string) bool {
|
||||||
|
s.mu.RLock()
|
||||||
|
room := s.rooms[roomName]
|
||||||
|
s.mu.RUnlock()
|
||||||
|
|
||||||
|
if room == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, connid := range room {
|
||||||
|
if connID == connid {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// LeaveAll kicks out a connection from ALL of its joined rooms
|
// LeaveAll kicks out a connection from ALL of its joined rooms
|
||||||
func (s *Server) LeaveAll(connID string) {
|
func (s *Server) LeaveAll(connID string) {
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user