kataras / neffos

A modern, fast and scalable websocket framework with elegant API written in Go
http://bit.ly/neffos-wiki
MIT License
572 stars 47 forks source link

[BUG] panic when multiple events are set in empty namespace #102

Closed heliosgo closed 8 months ago

heliosgo commented 10 months ago

Describe the bug When multiple events are set in empty namespace, and include OnNativeMessage, it may panic if received native message before connectedNamespaces is set.

Screenshots image

Here is some source code I found.

func (c *Conn) handleMessage(msg Message) error {
    if msg.isInvalid {
        return ErrInvalidPayload
    }

    if msg.IsNative && c.allowNativeMessages {
        ns := c.Namespace("")
        return ns.events.fireEvent(ns, msg)               // panic
    }

    ......

    return nil
}

I think the code should be like this.

func (c *Conn) handleMessage(msg Message) error {
    if msg.isInvalid {
        return ErrInvalidPayload
    }

    if msg.IsNative && c.shouldHandleOnlyNativeMessages {    // this line
        ns := c.Namespace("")
        return ns.events.fireEvent(ns, msg)         
    }

    ......

    return nil
}