mirror of
https://github.com/kataras/iris.git
synced 2025-01-24 03:01:03 +01:00
2042fddb66
Former-commit-id: c1a59b86733e890709b52446e22427a17d87f5fc
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
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 with:
|
|
// c.Emit("chat", msg)
|
|
// Write message to all except this client with:
|
|
c.To(websocket.Broadcast).Emit("chat", msg)
|
|
})
|
|
}
|