sio

package module
v0.0.0-...-b080d46 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 3, 2022 License: MIT Imports: 10 Imported by: 0

README

socket.io

GoDoc License

Installation

Use go get.

go get github.com/funcards/socket.io

Then import socket.io package into your own code.

import "github.com/funcards/socket.io"

License

Distributed under MIT License, please see license file within the code for more details.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateDataPacket

func CreateDataPacket(t siop.PacketType, event string, args ...any) siop.Packet

func NewAdapter

func NewAdapter(nsp Namespace, logger *zap.Logger) *adapter

func NewClient

func NewClient(srv Server, conn eio.Socket, logger *zap.Logger) *client

func NewNamespace

func NewNamespace(name string, srv Server, logger *zap.Logger) *namespace

func NewServer

func NewServer(cfg Config, eServer eio.Server, adapterFactory AdapterFactory, logger *zap.Logger) *server

func NewSocket

func NewSocket(nsp Namespace, client Client, data any, logger *zap.Logger) *socket

Types

type Adapter

type Adapter interface {
	Broadcast(packet siop.Packet, rooms []string, excluded ...string)
	Add(room string, sck Socket)
	Remove(room string, sck Socket)
	Clients(room string) []Socket
	Rooms(client Socket) []string
}

type AdapterFactory

type AdapterFactory func(nsp Namespace) Adapter

type Client

type Client interface {
	SID() string
	Query() url.Values
	Headers() map[string]string
	Conn() eio.Socket
	Send(packet siop.Packet)
	Remove(sck Socket)
	Disconnect()
}

type Config

type Config struct {
	ConnectionTimeout time.Duration `yaml:"connection_timeout" env-default:"90s" env:"SIO_CONNECTION_TIMEOUT"`
}

type Namespace

type Namespace interface {
	eio.Emitter

	NextAckID() uint64
	Name() string
	Server() Server
	Adapter() Adapter
	Add(client Client, data any) Socket
	Remove(sck Socket)
	AddConnected(sck Socket)
	RemoveConnected(sck Socket)
	ConnectedSockets() map[string]Socket
	Broadcast(rooms []string, event string, args ...any)
}

type ReceivedByLocalAck

type ReceivedByLocalAck func(args ...any)

ReceivedByLocalAck callback for local received acknowledgement. Call this method to send ack to remote client.

type ReceivedByRemoteAck

type ReceivedByRemoteAck func(args ...any)

ReceivedByRemoteAck callback for remote received acknowledgement. Called when remote client calls ack callback.

type Server

type Server interface {
	Cfg() Config
	Shutdown()
	AdapterFactory() AdapterFactory
	HasNamespace(nsp string) bool
	Namespace(nsp string) Namespace
}

type Socket

type Socket interface {
	eio.Emitter

	SID() string
	Namespace() Namespace
	ConnectData() any
	Query() url.Values
	Headers() map[string]string
	Disconnect(close bool)
	Broadcast(rooms []string, event string, args ...any)
	Send(remoteAck ReceivedByRemoteAck, event string, args ...any)
	JoinRooms(rooms ...string)
	LeaveRooms(rooms ...string)
	LeaveAllRooms()
	OnEvent(packet siop.Packet)
	OnAck(packet siop.Packet)
	OnPacket(packet siop.Packet)
	OnConnect()
	OnDisconnect()
	OnError(msg string, err error)
	OnClose(reason, description string)
	SendPacket(packet siop.Packet)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL