Documentation ¶
Index ¶
- Constants
- Variables
- func FormatCloseMessage(closeCode int, text string) []byte
- type Config
- type Melody
- func (m *Melody) BroadcastBinary(msg []byte) error
- func (m *Melody) BroadcastBinaryFilter(msg []byte, fn func(*Session) bool) error
- func (m *Melody) BroadcastBinaryMultiple(msg []byte, sessions []*Session) error
- func (m *Melody) BroadcastBinaryOthers(msg []byte, s *Session) error
- func (m *Melody) BroadcastText(msg []byte) error
- func (m *Melody) BroadcastTextFilter(msg []byte, fn func(*Session) bool) error
- func (m *Melody) BroadcastTextMultiple(msg []byte, sessions []*Session) error
- func (m *Melody) BroadcastTextOthers(msg []byte, s *Session) error
- func (m *Melody) Close() error
- func (m *Melody) CloseWithMsg(msg []byte) error
- func (m *Melody) HandleAfterSendBinaryMessage(fn func(*Session, []byte))
- func (m *Melody) HandleAfterSendTextMessage(fn func(*Session, []byte))
- func (m *Melody) HandleBinaryMessage(fn func(*Session, []byte))
- func (m *Melody) HandleClose(fn func(*Session, int, string) error)
- func (m *Melody) HandleConnect(fn func(*Session))
- func (m *Melody) HandleDisconnect(fn func(*Session))
- func (m *Melody) HandleError(fn func(*Session, error))
- func (m *Melody) HandlePong(fn func(*Session))
- func (m *Melody) HandleRequest(w http.ResponseWriter, r *http.Request) error
- func (m *Melody) HandleRequestWithStates(w http.ResponseWriter, r *http.Request, states SessionStates) error
- func (m *Melody) HandleTextMessage(fn func(*Session, []byte))
- func (m *Melody) IsClosed() bool
- func (m *Melody) Len() int
- type Server
- type Session
- func (s *Session) Close() error
- func (s *Session) CloseWithMsg(msg []byte) error
- func (s *Session) Get(key string) (value interface{}, exists bool)
- func (s Session) ID() SessionID
- func (s *Session) IsClosed() bool
- func (s *Session) MustGet(key string) interface{}
- func (s Session) Request() *http.Request
- func (s *Session) Set(key string, value interface{})
- func (s Session) URLPath() string
- func (s *Session) WriteBinary(msg []byte) error
- func (s *Session) WriteText(msg []byte) error
- type SessionID
- type SessionStates
Constants ¶
const ( CloseNormalClosure = 1000 CloseGoingAway = 1001 CloseProtocolError = 1002 CloseUnsupportedData = 1003 CloseNoStatusReceived = 1005 CloseAbnormalClosure = 1006 CloseInvalidFramePayloadData = 1007 ClosePolicyViolation = 1008 CloseMessageTooBig = 1009 CloseMandatoryExtension = 1010 CloseInternalServerErr = 1011 CloseServiceRestart = 1012 CloseTryAgainLater = 1013 CloseTLSHandshake = 1015 )
Close codes defined in RFC 6455, section 11.7. Duplicate of codes from gorilla/websocket for convenience.
Variables ¶
var DefaultConfig = Config{ WriteWait: 10 * time.Second, PongWait: 60 * time.Second, PingPeriod: (60 * time.Second * 9) / 10, MaxMessageSize: 1024 * 512, MessageBufferSize: 4096, }
DefaultConfig default melody configuration
var S = NewServer(DefaultConfig)
Functions ¶
func FormatCloseMessage ¶
FormatCloseMessage formats closeCode and text as a WebSocket close message.
Types ¶
type Config ¶
type Config struct { WriteWait time.Duration // Milliseconds until write times out. PongWait time.Duration // Timeout for waiting on pong. PingPeriod time.Duration // Milliseconds between pings. MaxMessageSize int64 // Maximum size in bytes of a message. MessageBufferSize int // The max amount of messages that can be in a sessions buffer before it starts dropping them. }
Config melody configuration struct.
type Melody ¶
type Melody struct { Config Config Upgrader *websocket.Upgrader // contains filtered or unexported fields }
Melody implements a websocket manager.
func (*Melody) BroadcastBinary ¶
BroadcastBinary broadcasts a binary message to all sessions.
func (*Melody) BroadcastBinaryFilter ¶
BroadcastBinaryFilter broadcasts a binary message to all sessions that fn returns true for.
func (*Melody) BroadcastBinaryMultiple ¶
BroadcastBinaryMultiple broadcasts a binary message to multiple sessions given in the sessions slice.
func (*Melody) BroadcastBinaryOthers ¶
BroadcastBinaryOthers broadcasts a binary message to all sessions except session s.
func (*Melody) BroadcastText ¶
BroadcastText broadcasts a text message to all sessions.
func (*Melody) BroadcastTextFilter ¶
BroadcastTextFilter broadcasts a text message to all sessions that fn returns true for.
func (*Melody) BroadcastTextMultiple ¶
BroadcastTextMultiple broadcasts a text message to multiple sessions given in the sessions slice.
func (*Melody) BroadcastTextOthers ¶
BroadcastTextOthers broadcasts a text message to all sessions except session s.
func (*Melody) CloseWithMsg ¶
CloseWithMsg closes the melody instance with the given close payload and all connected sessions. Use the FormatCloseMessage function to format a proper close message payload.
func (*Melody) HandleAfterSendBinaryMessage ¶
HandleAfterSendBinaryMessage fires fn when a binary message is successfully sent.
func (*Melody) HandleAfterSendTextMessage ¶
HandleAfterSendTextMessage fires fn when a text message is successfully sent.
func (*Melody) HandleBinaryMessage ¶
HandleBinaryMessage fires fn when a binary message comes in.
func (*Melody) HandleClose ¶
HandleClose sets the handler for close messages received from the session. The code argument to h is the received close code or CloseNoStatusReceived if the close message is empty. The default close handler sends a close frame back to the session.
The application must read the connection to process close messages as described in the section on Control Frames above.
The connection read methods return a CloseError when a close frame is received. Most applications should handle close messages as part of their normal error handling. Applications should only set a close handler when the application must perform some action before sending a close frame back to the session.
func (*Melody) HandleConnect ¶
HandleConnect fires fn when a session connects.
func (*Melody) HandleDisconnect ¶
HandleDisconnect fires fn when a session disconnects.
func (*Melody) HandleError ¶
HandleError fires fn when a session has an error.
func (*Melody) HandlePong ¶
HandlePong fires fn when a pong is received from a session.
func (*Melody) HandleRequest ¶
HandleRequest upgrades http requests to websocket connections and dispatches them to be handled by the melody instance.
func (*Melody) HandleRequestWithStates ¶
func (m *Melody) HandleRequestWithStates(w http.ResponseWriter, r *http.Request, states SessionStates) error
HandleRequestWithStates does the same as HandleRequest but populates session.States with states.
func (*Melody) HandleTextMessage ¶
HandleTextMessage fires fn when a text message comes in.
type Server ¶
type Server struct { *Melody // contains filtered or unexported fields }
func (Server) ListenAddr ¶
func (Server) SessionNum ¶
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session wrapper around websocket connections.
func NewSession ¶
func (*Session) CloseWithMsg ¶
CloseWithMsg closes the session with the provided payload. Use the FormatCloseMessage function to format a proper close message payload.
func (*Session) Get ¶
Get returns the value for the given key, ie: (value, true). If the value does not exists it returns (nil, false)
func (*Session) MustGet ¶
MustGet returns the value for the given key if it exists, otherwise it panics.
func (*Session) Set ¶
Set is used to store a new key/value pair exclusivelly for this session. It also lazy initializes s.Keys if it was not used previously.
func (*Session) WriteBinary ¶
WriteBinary writes a binary message to session.
type SessionStates ¶
type SessionStates = map[string]interface{}