56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package telal
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gorilla/websocket"
|
|
)
|
|
|
|
// Message represents the format of messages sent to clients
|
|
type Message struct {
|
|
Type string `json:"type"`
|
|
URL string `json:"url"`
|
|
}
|
|
|
|
func ServeAds() {
|
|
// Create a new WebSocket upgrader
|
|
upgrader := websocket.Upgrader{}
|
|
|
|
// Create a handler function for WebSocket connections
|
|
handler := func(w http.ResponseWriter, r *http.Request) {
|
|
// Upgrade the HTTP connection to a WebSocket connection
|
|
conn, err := upgrader.Upgrade(w, r, nil)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
defer conn.Close()
|
|
|
|
// Send a message containing an image URL every 5 seconds
|
|
for {
|
|
message := Message{
|
|
Type: "image",
|
|
URL: "http://example.com/image.jpg",
|
|
}
|
|
jsonMessage, err := json.Marshal(message)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
err = conn.WriteMessage(websocket.TextMessage, jsonMessage)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
time.Sleep(5 * time.Second)
|
|
}
|
|
}
|
|
|
|
// Set up an HTTP server with the WebSocket handler
|
|
http.HandleFunc("/", handler)
|
|
log.Fatal(http.ListenAndServe(":8080", nil))
|
|
}
|