eio

package module
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2019 License: MIT Imports: 15 Imported by: 1

README

Engine.IO

Build Status

Unofficial server-side Engine.IO in Golang.

Example

package main

import (
	"log"

	"github.com/jjeffcaii/engine.io"
)

func main() {
	server := eio.NewEngineBuilder().Build()
	server.OnConnect(func(socket eio.Socket) {
		socket.OnMessage(func(data []byte) {
			log.Println("recieve:", string(data))
		})
		socket.OnClose(func(reason string) {
			log.Println("socket closed:", socket.ID())
		})
		socket.Send("你好,世界!")
	})
	log.Fatalln(server.Listen(":3000"))
}

Compatibility

Key Compatible Remarks
polling-xhr Yes
polling-jsonp Yes
websocket Yes
upgrade Yes

NOTICE: all compatibility tests are under engine.io-client^3.1.2

Documents

Please see https://godoc.org/github.com/jjeffcaii/engine.io.

Benchmarks

TODO

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultPath = "/engine.io/"

DefaultPath for engine.io http router.

Functions

This section is empty.

Types

type Engine

type Engine interface {
	// Router returns a std golang http handler.
	Router() func(http.ResponseWriter, *http.Request)
	// Listen engine server.
	Listen(addr string) error
	// GetProtocol returns engine protocol version.
	GetProtocol() uint8
	// GetClients returns current socket map. (SocketID -> Socket)
	GetClients() map[string]Socket
	// CountClients returns current socket count.
	CountClients() int
	// OnConnect bind handler when sockets created.
	OnConnect(func(socket Socket)) Engine
	// Close current engine server.
	Close()
}

Engine is the main server/manager.

type EngineBuilder

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

EngineBuilder is a builder for Engine.

func NewEngineBuilder

func NewEngineBuilder() *EngineBuilder

NewEngineBuilder create a builder for Engine.

func (*EngineBuilder) Build

func (p *EngineBuilder) Build() Engine

Build returns a new Engine.

func (*EngineBuilder) ForceCheckProtocol added in v0.7.0

func (p *EngineBuilder) ForceCheckProtocol() *EngineBuilder

ForceCheckProtocol force check eio protocol version in query EIO.

func (*EngineBuilder) SetAllowRequest added in v0.4.0

func (p *EngineBuilder) SetAllowRequest(validator func(*http.Request) error) *EngineBuilder

SetAllowRequest set a function that receives a given request, and can decide whether to continue or not.

func (*EngineBuilder) SetAllowUpgrades

func (p *EngineBuilder) SetAllowUpgrades(enable bool) *EngineBuilder

SetAllowUpgrades define whether to allow transport upgrades. (default allow upgrades)

func (*EngineBuilder) SetCookie

func (p *EngineBuilder) SetCookie(enable bool) *EngineBuilder

SetCookie can control enable/disable of cookie.

func (*EngineBuilder) SetCookieHTTPOnly

func (p *EngineBuilder) SetCookieHTTPOnly(httpOnly bool) *EngineBuilder

SetCookieHTTPOnly if set true HttpOnly io cookie cannot be accessed by client-side APIs, such as JavaScript. (true) This option has no effect if cookie or cookiePath is set to false.

func (*EngineBuilder) SetCookiePath

func (p *EngineBuilder) SetCookiePath(path string) *EngineBuilder

SetCookiePath define the path of cookie.

func (*EngineBuilder) SetGenerateID

func (p *EngineBuilder) SetGenerateID(gen func(uint32) string) *EngineBuilder

SetGenerateID define the method of creating SocketID.

func (*EngineBuilder) SetLoggerError added in v0.5.0

func (p *EngineBuilder) SetLoggerError(logger func(format string, v ...interface{})) *EngineBuilder

SetLoggerError set logger for ERROR

func (*EngineBuilder) SetLoggerInfo added in v0.5.0

func (p *EngineBuilder) SetLoggerInfo(logger func(format string, v ...interface{})) *EngineBuilder

SetLoggerInfo set logger for INFO

func (*EngineBuilder) SetLoggerWarn added in v0.5.0

func (p *EngineBuilder) SetLoggerWarn(logger func(format string, v ...interface{})) *EngineBuilder

SetLoggerWarn set logger for WARN

func (*EngineBuilder) SetPath

func (p *EngineBuilder) SetPath(path string) *EngineBuilder

SetPath define the http router path for Engine.

func (*EngineBuilder) SetPingInterval

func (p *EngineBuilder) SetPingInterval(interval time.Duration) *EngineBuilder

SetPingInterval define ping time interval in milliseconds for client. (default is 60 seconds)

func (*EngineBuilder) SetPingTimeout

func (p *EngineBuilder) SetPingTimeout(timeout time.Duration) *EngineBuilder

SetPingTimeout define ping timeout in milliseconds for client. (default is 25 seconds)

func (*EngineBuilder) SetTransports

func (p *EngineBuilder) SetTransports(transports ...TransportType) *EngineBuilder

SetTransports define transport types allow.

type Socket

type Socket interface {
	// ID returns SessionID of socket.
	ID() string
	// Server returns engine of current socket.
	Server() Engine
	// Transport returns the active transport of socket.
	Transport() Transport
	// OnClose bind handler when socket closed.
	OnClose(func(reason string)) Socket
	// OnMessage bind handler when message income.
	OnMessage(func(data []byte)) Socket
	// OnError bind handler when error appeared.
	OnError(func(err error)) Socket
	// OnUpgrade bind handler when socket upgraded.
	OnUpgrade(func()) Socket
	// Send a message.
	Send(message interface{}) error
	// Close current socket.
	Close()
}

Socket is a representation of a client.

type Transport

type Transport interface {
	// GetType returns transport type.
	GetType() TransportType
	// GetEngine returns engine of current transport.
	GetEngine() Engine
	// GetSocket returns current socket.
	GetSocket() Socket
	// GetRequest returns native http request.
	GetRequest() *http.Request
	// contains filtered or unexported methods
}

Transport is used to control socket.

type TransportType

type TransportType int8

TransportType define the type of transport.

const (
	// POLLING use Polling-XHR as Transport.
	POLLING TransportType = iota
	// WEBSOCKET use Websocket as Transport.
	WEBSOCKET TransportType = iota
)

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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