1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package neffos
- import (
- "context"
- )
- // Room describes a connected connection to a room,
- // emits messages with the `Message.Room` filled to the specific room
- // and `Message.Namespace` to the underline `NSConn`'s namespace.
- type Room struct {
- NSConn *NSConn
- Name string
- }
- func newRoom(ns *NSConn, roomName string) *Room {
- return &Room{
- NSConn: ns,
- Name: roomName,
- }
- }
- // String method simply returns the Conn's ID().
- // To get the room's name simply use the `Room.Name` struct field instead.
- // Useful method to this room to be passed on `Server#Broadcast` method
- // to exclude itself from the broadcasted message's receivers.
- func (r *Room) String() string {
- return r.NSConn.String()
- }
- // Emit method sends a message to the remote side with its `Message.Room` filled to this specific room
- // and `Message.Namespace` to the underline `NSConn`'s namespace.
- func (r *Room) Emit(event string, body []byte) bool {
- return r.NSConn.Conn.Write(Message{
- Namespace: r.NSConn.namespace,
- Room: r.Name,
- Event: event,
- Body: body,
- })
- }
- // Leave method sends a remote and local leave room signal `OnRoomLeave` to this specific room
- // and fires the `OnRoomLeft` event if succeed.
- func (r *Room) Leave(ctx context.Context) error {
- return r.NSConn.askRoomLeave(ctx, Message{
- Namespace: r.NSConn.namespace,
- Room: r.Name,
- Event: OnRoomLeave,
- }, true)
- }
|