feat: expose websocket connection constructor

This commit is contained in:
wpetit 2024-08-05 17:53:59 +02:00
parent edf8653059
commit f54949ba3a
2 changed files with 50 additions and 23 deletions

View File

@ -25,7 +25,8 @@ var (
ErrorConnectionNotFound = errors.New("Connection not found")
)
/**
/*
*
socket.io server instance
*/
type Server struct {
@ -42,7 +43,8 @@ type Server struct {
tr transport.Transport
}
/**
/*
*
Close current channel
*/
func (c *Channel) Close() {
@ -51,7 +53,8 @@ func (c *Channel) Close() {
}
}
/**
/*
*
Get ip of socket client
*/
func (c *Channel) Ip() string {
@ -62,14 +65,16 @@ func (c *Channel) Ip() string {
return c.ip
}
/**
/*
*
Get request header of this connection
*/
func (c *Channel) RequestHeader() http.Header {
return c.requestHeader
}
/**
/*
*
Get channel by it's sid
*/
func (s *Server) GetChannel(sid string) (*Channel, error) {
@ -84,7 +89,8 @@ func (s *Server) GetChannel(sid string) (*Channel, error) {
return c, nil
}
/**
/*
*
Join this channel to given room
*/
func (c *Channel) Join(room string) error {
@ -111,7 +117,8 @@ func (c *Channel) Join(room string) error {
return nil
}
/**
/*
*
Remove this channel from given room
*/
func (c *Channel) Leave(room string) error {
@ -138,7 +145,8 @@ func (c *Channel) Leave(room string) error {
return nil
}
/**
/*
*
Get amount of channels, joined to given room, using channel
*/
func (c *Channel) Amount(room string) int {
@ -149,7 +157,8 @@ func (c *Channel) Amount(room string) int {
return c.server.Amount(room)
}
/**
/*
*
Get amount of channels, joined to given room, using server
*/
func (s *Server) Amount(room string) int {
@ -160,7 +169,8 @@ func (s *Server) Amount(room string) int {
return len(roomChannels)
}
/**
/*
*
Get list of channels, joined to given room, using channel
*/
func (c *Channel) List(room string) []*Channel {
@ -171,7 +181,8 @@ func (c *Channel) List(room string) []*Channel {
return c.server.List(room)
}
/**
/*
*
Get list of channels, joined to given room, using server
*/
func (s *Server) List(room string) []*Channel {
@ -201,7 +212,8 @@ func (c *Channel) BroadcastTo(room, method string, args interface{}) {
c.server.BroadcastTo(room, method, args)
}
/**
/*
*
Broadcast message to all room channels
*/
func (s *Server) BroadcastTo(room, method string, args interface{}) {
@ -220,7 +232,8 @@ func (s *Server) BroadcastTo(room, method string, args interface{}) {
}
}
/**
/*
*
Broadcast to all clients
*/
func (s *Server) BroadcastToAll(method string, args interface{}) {
@ -234,7 +247,8 @@ func (s *Server) BroadcastToAll(method string, args interface{}) {
}
}
/**
/*
*
Generate new id for socket.io connection
*/
func generateNewId(custom string) string {
@ -247,7 +261,8 @@ func generateNewId(custom string) string {
return buf.String()[:20]
}
/**
/*
*
On connection system handler, store sid
*/
func onConnectStore(c *Channel) {
@ -257,7 +272,8 @@ func onConnectStore(c *Channel) {
c.server.sids[c.Id()] = c
}
/**
/*
*
On disconnection system handler, clean joins and sid
*/
func onDisconnectCleanup(c *Channel) {
@ -301,7 +317,8 @@ func (s *Server) SendOpenSequence(c *Channel) {
c.out <- protocol.MustEncode(&protocol.Message{Type: protocol.MessageTypeEmpty})
}
/**
/*
*
Setup event loop for given connection
*/
func (s *Server) SetupEventLoop(conn transport.Connection, remoteAddr string,
@ -332,7 +349,8 @@ func (s *Server) SetupEventLoop(conn transport.Connection, remoteAddr string,
s.callLoopEvent(c, OnConnection)
}
/**
/*
*
implements ServeHTTP function from http.Handler
*/
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
@ -345,7 +363,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
s.tr.Serve(w, r)
}
/**
/*
*
Get amount of current connected sids
*/
func (s *Server) AmountOfSids() int64 {
@ -355,7 +374,8 @@ func (s *Server) AmountOfSids() int64 {
return int64(len(s.sids))
}
/**
/*
*
Get amount of rooms with at least one channel(or sid) joined
*/
func (s *Server) AmountOfRooms() int64 {
@ -365,7 +385,8 @@ func (s *Server) AmountOfRooms() int64 {
return int64(len(s.channels))
}
/**
/*
*
Create new socket.io server
*/
func NewServer(tr transport.Transport) *Server {

View File

@ -120,12 +120,14 @@ func (wst *WebsocketTransport) HandleConnection(
return &WebsocketConnection{socket, wst}, nil
}
/**
/*
*
Websocket connection do not require any additional processing
*/
func (wst *WebsocketTransport) Serve(w http.ResponseWriter, r *http.Request) {}
/**
/*
*
Returns websocket connection with default params
*/
func GetDefaultWebsocketTransport() *WebsocketTransport {
@ -137,3 +139,7 @@ func GetDefaultWebsocketTransport() *WebsocketTransport {
BufferSize: WsDefaultBufferSize,
}
}
func NewWebsocketConnection(socket *websocket.Conn, transport *WebsocketTransport) *WebsocketConnection {
return &WebsocketConnection{socket, transport}
}