go-engine.io is the implement of engine.io in golang, which is transport-based cross-browser/cross-device bi-directional communication layer for go-socket.io.
It is compatible with node.js implement, and supported long-polling and websocket transport.
Install the package with:
go get github.com/bitflipsoftware/go-engine.io
Import it with:
import "github.com/bitflipsoftware/go-engine.io"
and use engineio
as the package name inside the code.
Please check example folder for details.
package main
import (
"encoding/hex"
"io/ioutil"
"log"
"net/http"
"github.com/bitflipsoftware/go-engine.io"
)
func main() {
server, err := engineio.NewServer(nil)
if err != nil {
log.Fatal(err)
}
go func() {
for {
conn, _ := server.Accept()
go func() {
defer conn.Close()
for i := 0; i < 10; i++ {
t, r, _ := conn.NextReader()
b, _ := ioutil.ReadAll(r)
r.Close()
if t == engineio.MessageText {
log.Println(t, string(b))
} else {
log.Println(t, hex.EncodeToString(b))
}
w, _ := conn.NextWriter(t)
w.Write([]byte("pong"))
w.Close()
}
}()
}
}()
http.Handle("/engine.io/", server)
http.Handle("/", http.FileServer(http.Dir("./asset")))
log.Println("Serving at localhost:5000...")
log.Fatal(http.ListenAndServe(":5000", nil))
}
The 3-clause BSD License - see LICENSE for more details