MeshValueName name of mesh value
const MeshValueName = "g"
VaultName name of the vault
const VaultName = "Groups"
func AfterBroadcastGroupCmd(callback func(*user.User, func(error)))
AfterBroadcastGroupCmd registers a callback function to be executed after broadcast group command: Must be called before ExposeCommands
func AfterCreateGroupCmd(callback func(*user.User, func(error)))
AfterCreateGroupCmd registers a callback function to be executed after create group command: Must be called before ExposeCommands
func AfterJoinGroupCmd(callback func(*user.User, func(error)))
AfterJoinGroupCmd registers a callback function to be executed after join group command: Must be called before ExposeCommands
func AfterLeaveGroupCmd(callback func(*user.User, func(error)))
AfterLeaveGroupCmd registers a callback function to be executed after leave group command: Must be called before ExposeCommands
func Announce(groupID string, ver uint8, cmd uint16, message []byte, reliable bool)
Announce sends a broadcast message to the other members in the group without having the "sender" - MUST not be called by client directly for security reason
func BeforeBroadcastGroupCmd(callback func(*user.User, func(error)))
BeforeBroadcastGroupCmd registers a callback function to be executed before broadcast group command: Must be called before ExposeCommands
func BeforeCreateGroupCmd(callback func(*user.User, func(error)))
BeforeCreateGroupCmd registers a callback function to be executed before create group command: Must be called before ExposeCommands
func BeforeJoinGroupCmd(callback func(*user.User, func(error)))
BeforeJoinGroupCmd registers a callback function to be executed before join group command: Must be called before ExposeCommands
func BeforeLeaveGroupCmd(callback func(*user.User, func(error)))
BeforeLeaveGroupCmd registers a callback function to be executed before leave group command: Must be called before ExposeCommands
func Broadcast(groupID string, senderUser *user.User, ver uint8, cmd uint16, message []byte, reliable bool)
Broadcast Sends a broadcast message to the other members in the group
func ExposeCommands()
ExposeCommands exposes commands to the client to work with the Group package
func GetGroupIDList(userData *user.User) []string
GetGroupIDList returns an array of group IDs
func GetLatestGroupID(userData *user.User) string
GetLatestGroupID returns the newest group ID the user joined or created
func GetMemberMeshNodes(groupID string) []string
GetMemberMeshNodes returns an array of member mesh nodes that are participating the group
func Join(groupID string, userData *user.User, ver uint8, cmd uint16, message []byte, callback func(error))
Join Joins a group and notify the other members of the group on joining the group If message is nil or empty, broadcast will NOT be sent
func Leave(groupID string, userData *user.User, ver uint8, cmd uint16, message []byte, callback func(error))
Leave Leaves from a group and notify the other members on leaving If message is nil or empty, broadcast will NOT be sent
func NewGroup(userData *user.User, allowEmpty bool, join bool, ttl int64, interval int64) (string, error)
NewGroup Creates a new group and returns the groupp ID as a string to the callback function.
allowEmpty - If true, the group will not be deleted until TTL expires even if all members leave join - If true, the creator user will join the group automatically ttl - TTL of the group in seconds. The value must be greater than 0 interval - Broadcast interval in milliseconds. interval below 100ms will be forced to 0. If it's 0, no packet merge
func SetOnDiscardCustomMessage(custom func(string, string) []byte)
SetOnDiscardCustomMessage sets a custom function to create a custom message to be sent to members on user discard
func Setup(confpath string)
Setup optionally loads configurations
func SetupAsTCPServer()
SetupAsTCPServer Sets up group package as TCP server
func SetupAsUDPServer()
SetupAsUDPServer Sets up group package as UDP/RUDP server
func SetupAsWebSocketServer()
SetupAsWebSocketServer Sets up group package as WebSocket server
Group group data structure
type Group struct { ID string AllowEmpty bool Members []*Member // remote member mesh node list RemoteMemberNodes map[string]bool // user ID as key MemberMeshEndPoints map[string]string // user ID as key and user SID as value MemberSIDs map[string]string TTL int64 // contains filtered or unexported fields }
Member member of a group data structure
type Member struct { UID string SID string MeshEndPoint string }