socketio

package module
v1.4.5-0...-27adb52 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2021 License: BSD-3-Clause Imports: 14 Imported by: 0

README

go-socket.io

GoDoc Build Status Coverage Status Go Report Card

go-socket.io is library an implementation of Socket.IO in Golang, which is a realtime application framework.

Current this library supports 1.4 version of the Socket.IO client. It supports room, namespaces and broadcast at now.

Help wanted This project is looking for contributors to help fix bugs and implement new features. Please check Issue 192. All help is much appreciated.

Contents

Install

Install the package with:

go get github.com/googollee/go-socket.io

Import it with:

import "github.com/googollee/go-socket.io"

and use socketio as the package name inside the code.

Example

Please check more examples into folder in project for details. Examples

How to use Redis broadcast adapter

server := socketio.NewServer(nil)
ok, err := server.Adapter(&socketio.RedisAdapterOptions{
    Host:   "127.0.0.1",
    Port:   "6379",
    Prefix: "socket.io",
})

if !ok {
    fmt.Println("error:", err)
    return
}

FAQ

It is some popular questions about this repository:

  • Is this library supported socket.io version 2?
    • No, but if you wanna you can help to do it. Join us in community chat Telegram
  • How to use go-socket.io with CORS?
  • What is minimal version Golang support for this library?
    • We required Go 1.9 or upper!
  • How to user?
    • Go-socket.io compatibility with Socket.IO 0.9.x, please use branch 0.9.x * or tag go-socket.io@v0.9.1

Community

Telegram chat: @go_socketio

Engineio

This project contains a sub-package called engineio. This used to be a separate package under https://github.com/googollee/go-engine.io.

It contains the engine.io analog implementation of the original node-package. https://github.com/socketio/engine.io It can be used without the socket.io-implementation. Please check the README.md in engineio/.

License

The 3-clause BSD License - see LICENSE for more details

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Broadcast

type Broadcast interface {
	Join(room string, connection Conn)            // Join causes the connection to join a room
	Leave(room string, connection Conn)           // Leave causes the connection to leave a room
	LeaveAll(connection Conn)                     // LeaveAll causes given connection to leave all rooms
	Clear(room string)                            // Clear causes removal of all connections from the room
	Send(room, event string, args ...interface{}) // Send will send an event with args to the room
	SendAll(event string, args ...interface{})    // SendAll will send an event with args to all the rooms
	ForEach(room string, f EachFunc)              // ForEach sends data by DataFunc, if room does not exits sends nothing
	Len(room string) int                          // Len gives number of connections in the room
	Rooms(connection Conn) []string               // Gives list of all the rooms if no connection given, else list of all the rooms the connection joined
	AllRooms() []string                           // Gives list of all the rooms the connection joined
}

Broadcast is the adaptor to handle broadcasts & rooms for socket.io server API

type Conn

type Conn interface {
	io.Closer
	Namespace

	// ID returns session id
	ID() string
	URL() url.URL
	LocalAddr() net.Addr
	RemoteAddr() net.Addr
	RemoteHeader() http.Header
}

Conn is a connection in go-socket.io

type EachFunc

type EachFunc func(Conn)

EachFunc typed for each callback function

type Namespace

type Namespace interface {
	// Context of this connection. You can save one context for one
	// connection, and share it between all handlers. The handlers
	// is called in one goroutine, so no need to lock context if it
	// only be accessed in one connection.
	SetContext(ctx interface{})
	Context() interface{}
	Namespace() string
	Emit(eventName string, v ...interface{})

	// Broadcast server side apis
	Join(room string)
	Leave(room string)
	LeaveAll()
	Rooms() []string
}

Namespace

type RedisAdapterOptions

type RedisAdapterOptions struct {
	Host   string
	Port   string
	Prefix string
}

RedisAdapterOptions is configuration to create new adapter

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server is a go-socket.io server.

func NewServer

func NewServer(c *engineio.Options) *Server

NewServer returns a server.

func (*Server) Adapter

func (s *Server) Adapter(opts *RedisAdapterOptions) (bool, error)

Adapter sets redis broadcast adapter

func (*Server) BroadcastToNamespace

func (s *Server) BroadcastToNamespace(namespace string, event string, args ...interface{}) bool

BroadcastToNamespace broadcasts given event & args to all the connections in the same namespace

func (*Server) BroadcastToRoom

func (s *Server) BroadcastToRoom(namespace string, room, event string, args ...interface{}) bool

BroadcastToRoom broadcasts given event & args to all the connections in the room

func (*Server) ClearRoom

func (s *Server) ClearRoom(namespace string, room string) bool

ClearRoom clears the room

func (*Server) Close

func (s *Server) Close() error

Close closes server.

func (*Server) Count

func (s *Server) Count() int

Count number of connections

func (*Server) ForEach

func (s *Server) ForEach(namespace string, room string, f EachFunc) bool

ForEach sends data by DataFunc, if room does not exits sends nothing

func (*Server) JoinRoom

func (s *Server) JoinRoom(namespace string, room string, connection Conn) bool

JoinRoom joins given connection to the room

func (*Server) LeaveAllRooms

func (s *Server) LeaveAllRooms(namespace string, connection Conn) bool

LeaveAllRooms leaves the given connection from all rooms

func (*Server) LeaveRoom

func (s *Server) LeaveRoom(namespace string, room string, connection Conn) bool

LeaveRoom leaves given connection from the room

func (*Server) OnConnect

func (s *Server) OnConnect(namespace string, f func(Conn) error)

OnConnect set a handler function f to handle open event for namespace nsp.

func (*Server) OnDisconnect

func (s *Server) OnDisconnect(nsp string, f func(Conn, string))

OnDisconnect set a handler function f to handle disconnect event for namespace nsp.

func (*Server) OnError

func (s *Server) OnError(namespace string, f func(Conn, error))

OnError set a handler function f to handle error for namespace.

func (*Server) OnEvent

func (s *Server) OnEvent(namespace, event string, f interface{})

OnEvent set a handler function f to handle event for namespace.

func (*Server) RoomLen

func (s *Server) RoomLen(namespace string, room string) int

RoomLen gives number of connections in the room

func (*Server) Rooms

func (s *Server) Rooms(namespace string) []string

Rooms gives list of all the rooms

func (*Server) Serve

func (s *Server) Serve() error

Serve serves go-socket.io server

func (*Server) ServeHTTP

func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request)

Directories

Path Synopsis
_example
gf
iris
Package main runs a go-socket.io based websocket server with Iris web server.
Package main runs a go-socket.io based websocket server with Iris web server.
packet
Package packet is codec of packet for connection which supports framing.
Package packet is codec of packet for connection which supports framing.

Jump to

Keyboard shortcuts

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