package main import ( "fmt" "github.com/kataras/iris" "github.com/kataras/iris/websocket" ) func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.ServeFile("websockets.html", false) // second parameter: enable gzip? }) setupWebsocket(app) // x2 // http://localhost:8080 // http://localhost:8080 // write something, press submit, see the result. app.Run(iris.Addr(":8080")) } func setupWebsocket(app *iris.Application) { // create our echo websocket server ws := websocket.New(websocket.Config{ ReadBufferSize: 1024, WriteBufferSize: 1024, }) ws.OnConnection(handleConnection) // register the server on an endpoint. // see the inline javascript code in the websockets.html, this endpoint is used to connect to the server. app.Get("/echo", ws.Handler()) // serve the javascript built'n client-side library, // see weboskcets.html script tags, this path is used. app.Any("/iris-ws.js", func(ctx iris.Context) { ctx.Write(websocket.ClientSource) }) } func handleConnection(c websocket.Connection) { // Read events from browser c.On("chat", func(msg string) { // Print the message to the console, c.Context() is the iris's http context. fmt.Printf("%s sent: %s\n", c.Context().RemoteAddr(), msg) // Write message back to the client message owner: // c.Emit("chat", msg) c.To(websocket.Broadcast).Emit("chat", msg) }) }