Skip to content
Browse files

add websocket/Connection#IsJoined as requested at #895

  • Loading branch information...
kataras committed Feb 3, 2018
1 parent 21cb572 commit cb9e30948c8f1dd099f5168218d110765989992e
Showing with 29 additions and 0 deletions.
  1. +7 −0 websocket/connection.go
  2. +22 −0 websocket/server.go
@@ -174,6 +174,9 @@ type (
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.
// 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
// Returns true if the connection has actually left from the particular room.
Leave(string) bool
@@ -506,6 +509,10 @@ func (c *connection) Join(roomName string) {

func (c *connection) IsJoined(roomName string) bool {
return c.server.IsJoined(roomName,

func (c *connection) Leave(roomName string) bool {
return c.server.Leave(roomName,
@@ -256,6 +256,28 @@ func (s *Server) join(roomName string, connID string) {
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 {
room := s.rooms[roomName]

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
func (s *Server) LeaveAll(connID string) {

0 comments on commit cb9e309

Please sign in to comment.
You can’t perform that action at this time.