I try to sent console output of the execution command to html page via Websocket. I did not understand completely goFiber websocket example codes on this offical webpage. Firstly I think that I should sent only some dummy text to client. I watched some tutorial about websocket on youtube but this is not still clear me.
I speared some callback function to ws
package but I don't know how will sent different message and how client will receive this message by connection websocket. I share my ws
package and main.go code statements.
package ws
import (
"log"
"github.com/gofiber/contrib/websocket"
"github.com/gofiber/fiber/v2"
)
var WsUpgrade = func(c *fiber.Ctx) error {
if websocket.IsWebSocketUpgrade(c) {
c.Locals("allowed", true)
return c.Next()
}
return fiber.ErrUpgradeRequired
}
var WsWriteMessage = func(c *websocket.Conn) {
var (
mt int
msg []byte
err error
)
for {
if mt, msg, err = c.ReadMessage(); err != nil {
log.Println("read:", err)
break
}
log.Printf("recv: %s", msg)
if err = c.WriteMessage(mt, msg); err != nil {
log.Println("write:", err)
break
}
}
}
package main
import (
"fiber-app/pkg/ws"
"github.com/gofiber/contrib/websocket"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html/v2"
)
func main() {
engine := html.New("./views", ".html")
appconf := fiber.Config{Views: engine}
app := fiber.New(appconf)
app.Static("/", "./public")
app.Use("/ws", ws.WsUpgrade)
app.Get("/ws/progress/:id", websocket.New(ws.WsWriteMessage))
app.Listen(":5000")
}
When I request on browser (ws://machine-ip:5000/ws/progress/123), browser response like "This site can't be reached".