Documentation ¶
Overview ¶
Package websocket is an extension package that makes the yRPC framework compatible with websocket protocol as specified in RFC 6455.
Copyright 2018-2023 HenryLee. All Rights Reserved. Copyright 2024 sqos. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2021-2023 HenryLee. All Rights Reserved. Copyright 2024 sqos. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- func NewDialPlugin(rootPath string) yrpc.Plugin
- func NewJSONServeHandler(peer yrpc.Peer, handshake func(*ws.Config, *http.Request) error) http.Handler
- func NewPbServeHandler(peer yrpc.Peer, handshake func(*ws.Config, *http.Request) error) http.Handler
- func NewServeHandler(peer yrpc.Peer, handshake func(*ws.Config, *http.Request) error, ...) http.Handler
- func NewWsProtoFunc(subProto ...yrpc.ProtoFunc) yrpc.ProtoFunc
- func QueryToken(tokenKey string, r *http.Request) (token string)
- type Acceptor
- type Checker
- type Client
- type HandshakeAuthPlugin
- type PostWebsocketAcceptPlugin
- type PreWebsocketHandshakePlugin
- type Server
- func (srv *Server) Close() error
- func (srv *Server) Handle(rootPath string, handler http.Handler)
- func (srv *Server) HandleFunc(rootPath string, handler func(http.ResponseWriter, *http.Request))
- func (srv *Server) ListenAndServe(protoFunc ...yrpc.ProtoFunc) (err error)
- func (srv *Server) ListenAndServeJSON() error
- func (srv *Server) ListenAndServeProtobuf() error
- func (srv *Server) SetHandshake(handshake func(*ws.Config, *http.Request) error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewDialPlugin ¶
NewDialPlugin creates a websocket plugin for client.
func NewJSONServeHandler ¶
func NewJSONServeHandler(peer yrpc.Peer, handshake func(*ws.Config, *http.Request) error) http.Handler
NewJSONServeHandler creates a websocket json handler.
func NewPbServeHandler ¶
func NewPbServeHandler(peer yrpc.Peer, handshake func(*ws.Config, *http.Request) error) http.Handler
NewPbServeHandler creates a websocket protobuf handler.
func NewServeHandler ¶
func NewServeHandler(peer yrpc.Peer, handshake func(*ws.Config, *http.Request) error, protoFunc ...yrpc.ProtoFunc) http.Handler
NewServeHandler creates a websocket handler.
func NewWsProtoFunc ¶
NewWsProtoFunc wraps a protocol to a new websocket protocol.
Types ¶
type Acceptor ¶
Acceptor provide authenticated yrpc.Session you can get the sessionID that your return by Checker()
type Checker ¶
Checker deal with http.Request and your authenticate logic, the a sessionID returned will used by yrpc.Session.SetID(), if auth succeeded.
type Client ¶
Client a websocket client
type HandshakeAuthPlugin ¶
func NewHandshakeAuthPlugin ¶
func NewHandshakeAuthPlugin(ckFn Checker, apFn Acceptor) *HandshakeAuthPlugin
NewHandshakeAuthPlugin creates a handshake auth plugin for server.
func (*HandshakeAuthPlugin) Name ¶
func (p *HandshakeAuthPlugin) Name() string
func (*HandshakeAuthPlugin) PostAccept ¶
func (*HandshakeAuthPlugin) PreHandshake ¶
func (p *HandshakeAuthPlugin) PreHandshake(r *http.Request) *yrpc.Status
type PostWebsocketAcceptPlugin ¶
type PostWebsocketAcceptPlugin interface { yrpc.Plugin PostAccept(sess yrpc.Session, conn *ws.Conn) *yrpc.Status }
PreHandshake executes the PostWebsocketAcceptPlugin after websocket accepting connection
type PreWebsocketHandshakePlugin ¶
type PreWebsocketHandshakePlugin interface { yrpc.Plugin PreHandshake(r *http.Request) *yrpc.Status }
PreHandshake executes the PreWebsocketHandshakePlugins before websocket handshake,
type Server ¶
Server a websocket server
func (*Server) Handle ¶
Handle registers the handler for the given rootPath. If a handler already exists for rootPath, Handle panics.
func (*Server) HandleFunc ¶
HandleFunc registers the handler function for the given rootPath.
func (*Server) ListenAndServe ¶
ListenAndServe listens on the TCP network address addr and then calls Serve with handler to handle requests on incoming connections. Accepted connections are configured to enable TCP keep-alives.
The handler is typically nil, in which case the DefaultServeMux is used.
ListenAndServe always returns a non-nil error.
If protoFunc is empty, JSON is used by default.
func (*Server) ListenAndServeJSON ¶
ListenAndServeJSON listen and serve with the JSON protocol.
func (*Server) ListenAndServeProtobuf ¶
ListenAndServeProtobuf listen and serve with the Protobuf protocol.
Directories ¶
Path | Synopsis |
---|---|
Package jsonSubProto is implemented JSON socket communication protocol.
|
Package jsonSubProto is implemented JSON socket communication protocol. |
Package pbSubProto is implemented PROTOBUF socket communication protocol.
|
Package pbSubProto is implemented PROTOBUF socket communication protocol. |
Package websocket implements a client and server for the WebSocket protocol as specified in RFC 6455.
|
Package websocket implements a client and server for the WebSocket protocol as specified in RFC 6455. |