Documentation
¶
Index ¶
- Constants
- Variables
- func ReadHello(peer Peer, serializer serializers.Serializer) (*messages.Hello, error)
- func ReadMessage(peer Peer, serializer serializers.Serializer) (messages.Message, error)
- func WriteMessage(peer Peer, message messages.Message, serializer serializers.Serializer) error
- type BaseSession
- type CallResponse
- type Client
- type Error
- type Event
- type EventHandler
- type GoodBye
- type Invocation
- type InvocationHandler
- type Peer
- type Progress
- type ProgressHandler
- type PublishResponse
- type ReaderFunc
- type Realm
- type RegisterResponse
- type Registration
- type Result
- type Router
- func (r *Router) AddRealm(name string)
- func (r *Router) AttachClient(base BaseSession) error
- func (r *Router) Close()
- func (r *Router) DetachClient(base BaseSession) error
- func (r *Router) HasRealm(name string) bool
- func (r *Router) ReceiveMessage(base BaseSession, msg messages.Message) error
- func (r *Router) RemoveRealm(name string)
- type SendProgress
- type SendProgressive
- type Server
- type ServerConfig
- type Session
- func (s *Session) Call(ctx context.Context, procedure string, args []any, kwArgs map[string]any, ...) (*Result, error)
- func (s *Session) CallProgress(ctx context.Context, procedure string, args []any, kwArgs map[string]any, ...) (*Result, error)
- func (s *Session) CallProgressive(ctx context.Context, procedure string, progressFunc SendProgressive) (*Result, error)
- func (s *Session) CallProgressiveProgress(ctx context.Context, procedure string, progressFunc SendProgressive, ...) (*Result, error)
- func (s *Session) Connected() bool
- func (s *Session) GoodBye() *GoodBye
- func (s *Session) ID() int64
- func (s *Session) Leave() error
- func (s *Session) LeaveChan() <-chan struct{}
- func (s *Session) Publish(topic string, args []any, kwArgs map[string]any, options map[string]any) error
- func (s *Session) Register(procedure string, handler InvocationHandler, options map[string]any) (*Registration, error)
- func (s *Session) SetOnLeaveListener(listener func())
- func (s *Session) Subscribe(topic string, handler EventHandler, options map[string]any) (*Subscription, error)
- func (s *Session) Unregister(registrationID int64) error
- func (s *Session) Unsubscribe(subscription *Subscription) error
- type SubscribeResponse
- type Subscription
- type TransportType
- type UnregisterResponse
- type UnsubscribeResponse
- type WSDialerConfig
- type WSPeerConfig
- type WSSerializerSpec
- type WebSocketAcceptor
- type WebSocketJoiner
- type WebSocketPeer
- type WebSocketServerConfig
- type WriterFunc
Constants ¶
View Source
const ( JsonWebsocketProtocol = "wamp.2.json" MsgpackWebsocketProtocol = "wamp.2.msgpack" CborWebsocketProtocol = "wamp.2.cbor" ProtobufSubProtocol = "wamp.2.protobuf" CloseGoodByeAndOut = "wamp.close.goodbye_and_out" CloseCloseRealm = "wamp.close.close_realm" CloseSystemShutdown = "wamp.close.system_shutdown" )
View Source
const ErrNoResult = "io.xconn.no_result"
Variables ¶
View Source
var ( JSONSerializerSpec = NewWSSerializerSpec( JsonWebsocketProtocol, &serializers.JSONSerializer{}) CBORSerializerSpec = NewWSSerializerSpec( CborWebsocketProtocol, &serializers.CBORSerializer{}) MsgPackSerializerSpec = NewWSSerializerSpec( MsgpackWebsocketProtocol, &serializers.MsgPackSerializer{}) ProtobufSerializerSpec = NewWSSerializerSpec( ProtobufSubProtocol, &wampprotobuf.ProtobufSerializer{}) )
Functions ¶
func ReadHello ¶
func ReadHello(peer Peer, serializer serializers.Serializer) (*messages.Hello, error)
func ReadMessage ¶
func ReadMessage(peer Peer, serializer serializers.Serializer) (messages.Message, error)
func WriteMessage ¶
func WriteMessage(peer Peer, message messages.Message, serializer serializers.Serializer) error
Types ¶
type BaseSession ¶
type BaseSession interface { ID() int64 Realm() string AuthID() string AuthRole() string Serializer() serializers.Serializer NetConn() net.Conn Read() ([]byte, error) Write([]byte) error ReadMessage() (messages.Message, error) WriteMessage(messages.Message) error Close() error }
func Accept ¶
func Accept(peer Peer, hello *messages.Hello, serializer serializers.Serializer, authenticator auth.ServerAuthenticator) (BaseSession, error)
func Join ¶
func Join(cl Peer, realm string, serializer serializers.Serializer, authenticator auth.ClientAuthenticator) (BaseSession, error)
func NewBaseSession ¶
func NewBaseSession(id int64, realm, authID, authRole string, cl Peer, serializer serializers.Serializer) BaseSession
type CallResponse ¶
type CallResponse struct {
// contains filtered or unexported fields
}
type Client ¶
type EventHandler ¶
type EventHandler func(event *Event)
type Invocation ¶
type InvocationHandler ¶
type InvocationHandler func(ctx context.Context, invocation *Invocation) *Result
type Peer ¶
type Peer interface { Type() TransportType NetConn() net.Conn Read() ([]byte, error) Write([]byte) error }
func DialWebSocket ¶
func NewWebSocketPeer ¶
func NewWebSocketPeer(conn net.Conn, peerConfig WSPeerConfig) (Peer, error)
func UpgradeWebSocket ¶
func UpgradeWebSocket(conn net.Conn, config *WebSocketServerConfig) (Peer, error)
type ProgressHandler ¶
type ProgressHandler func(result *Result)
type PublishResponse ¶
type PublishResponse struct {
// contains filtered or unexported fields
}
type ReaderFunc ¶
type ReaderFunc func(rw io.ReadWriter) ([]byte, error)
type Realm ¶
type Realm struct {
// contains filtered or unexported fields
}
func (*Realm) AttachClient ¶
func (r *Realm) AttachClient(base BaseSession) error
func (*Realm) DetachClient ¶
func (r *Realm) DetachClient(base BaseSession) error
type RegisterResponse ¶
type RegisterResponse struct {
// contains filtered or unexported fields
}
type Registration ¶
type Registration struct {
ID int64
}
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
func (*Router) AttachClient ¶
func (r *Router) AttachClient(base BaseSession) error
func (*Router) DetachClient ¶
func (r *Router) DetachClient(base BaseSession) error
func (*Router) ReceiveMessage ¶
func (r *Router) ReceiveMessage(base BaseSession, msg messages.Message) error
func (*Router) RemoveRealm ¶
type SendProgressive ¶
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
func NewServer ¶
func NewServer(router *Router, authenticator auth.ServerAuthenticator, config *ServerConfig) *Server
func (*Server) HandleClient ¶
func (*Server) RegisterSpec ¶
func (s *Server) RegisterSpec(spec WSSerializerSpec) error
type ServerConfig ¶
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
func NewSession ¶
func NewSession(base BaseSession, serializer serializers.Serializer) *Session
func (*Session) CallProgress ¶
func (*Session) CallProgressive ¶
func (*Session) CallProgressiveProgress ¶
func (s *Session) CallProgressiveProgress(ctx context.Context, procedure string, progressFunc SendProgressive, progressHandler ProgressHandler) (*Result, error)
func (*Session) Register ¶
func (s *Session) Register(procedure string, handler InvocationHandler, options map[string]any) (*Registration, error)
func (*Session) SetOnLeaveListener ¶
func (s *Session) SetOnLeaveListener(listener func())
func (*Session) Subscribe ¶
func (s *Session) Subscribe(topic string, handler EventHandler, options map[string]any) (*Subscription, error)
func (*Session) Unregister ¶
func (*Session) Unsubscribe ¶
func (s *Session) Unsubscribe(subscription *Subscription) error
type SubscribeResponse ¶
type SubscribeResponse struct {
// contains filtered or unexported fields
}
type Subscription ¶
type Subscription struct {
ID int64
}
type TransportType ¶
type TransportType int
const ( TransportNone TransportType = iota TransportWebSocket )
type UnregisterResponse ¶
type UnregisterResponse struct {
// contains filtered or unexported fields
}
type UnsubscribeResponse ¶
type UnsubscribeResponse struct {
// contains filtered or unexported fields
}
type WSDialerConfig ¶
type WSPeerConfig ¶
type WSSerializerSpec ¶
type WSSerializerSpec interface { SubProtocol() string Serializer() serializers.Serializer }
func NewWSSerializerSpec ¶
func NewWSSerializerSpec(subProtocol string, serializer serializers.Serializer) WSSerializerSpec
type WebSocketAcceptor ¶
type WebSocketAcceptor struct { Authenticator auth.ServerAuthenticator // contains filtered or unexported fields }
func (*WebSocketAcceptor) Accept ¶
func (w *WebSocketAcceptor) Accept(conn net.Conn, config *WebSocketServerConfig) (BaseSession, error)
func (*WebSocketAcceptor) RegisterSpec ¶
func (w *WebSocketAcceptor) RegisterSpec(spec WSSerializerSpec) error
func (*WebSocketAcceptor) Spec ¶
func (w *WebSocketAcceptor) Spec(subProtocol string) (serializers.Serializer, error)
type WebSocketJoiner ¶
type WebSocketJoiner struct { SerializerSpec WSSerializerSpec Authenticator auth.ClientAuthenticator }
func (*WebSocketJoiner) Join ¶
func (w *WebSocketJoiner) Join(ctx context.Context, url, realm string, config *WSDialerConfig) (BaseSession, error)
type WebSocketPeer ¶
func (*WebSocketPeer) NetConn ¶
func (c *WebSocketPeer) NetConn() net.Conn
func (*WebSocketPeer) Protocol ¶
func (c *WebSocketPeer) Protocol() string
func (*WebSocketPeer) Read ¶
func (c *WebSocketPeer) Read() ([]byte, error)
func (*WebSocketPeer) Type ¶
func (c *WebSocketPeer) Type() TransportType
func (*WebSocketPeer) Write ¶
func (c *WebSocketPeer) Write(bytes []byte) error
type WebSocketServerConfig ¶
type WebSocketServerConfig struct { SubProtocols []string KeepAliveInterval time.Duration KeepAliveTimeout time.Duration }
func DefaultWebSocketServerConfig ¶
func DefaultWebSocketServerConfig() *WebSocketServerConfig
Source Files
¶
Click to show internal directories.
Click to hide internal directories.