Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

socketio

Go Reference

A Go (golang) implementation of socket.io, compatible with socket.io version 2.3.0. Supports rooms, namespaces, and real-time bidirectional browser-server communication.

Originally forked from googollee/go-socket.io with defect fixes, import cleanup, and dependency modernization.

Install

go get github.com/taigrr/socketio

Example

See the examples/chat directory for a full working chat server.

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/taigrr/socketio"
)

func main() {
	server, err := socketio.NewServer(nil)
	if err != nil {
		log.Fatal(err)
	}

	server.On("connection", func(so socketio.Socket) {
		fmt.Println("a user connected")
		so.Join("chat")
		so.On("chat message", func(msg string) {
			fmt.Println("chat message:", msg)
			so.BroadcastTo("chat", "chat message", msg)
		})
		so.On("disconnect", func() {
			fmt.Println("user disconnected")
		})
	})

	server.On("error", func(so socketio.Socket, err error) {
		fmt.Printf("error: %s\n", err)
	})

	http.Handle("/socket.io/", server)
	http.Handle("/", http.FileServer(http.Dir("./asset")))
	fmt.Println("serving on :9000")
	log.Fatal(http.ListenAndServe(":9000", nil))
}

WebSocket origin policy

By default the WebSocket transport enforces a same-origin policy: a browser connection is only upgraded when its Origin matches the request Host. This guards against Cross-Site WebSocket Hijacking. To intentionally allow cross-origin connections, configure the exported upgrader before serving:

import "github.com/taigrr/socketio/engineio/websocket"

websocket.Upgrader.CheckOrigin = func(r *http.Request) bool { return true }

License

3-clause BSD — see LICENSE for details.

About

A Go implementation of Socket.IO (v2.3.0 compatible) with rooms, namespaces, and real-time bidirectional browser-server communication.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages