123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package main
- import (
- "encoding/json"
- "fmt"
- "html/template"
- "log"
- "net/http"
- "time"
- "github.com/gorilla/websocket"
- "github.com/icrowley/fake"
- )
- var upgrader = websocket.Upgrader{
- ReadBufferSize: 1024,
- WriteBufferSize: 1024,
- CheckOrigin: func(r *http.Request) bool {
- return true
- },
- }
- func sendNewMsgNotifications(client *websocket.Conn) {
- ticker := time.NewTicker(3 * time.Second)
- for {
- w, err := client.NextWriter(websocket.TextMessage)
- if err != nil {
- ticker.Stop()
- break
- }
- msg := newMessage()
- w.Write(msg)
- w.Close()
- <-ticker.C
- }
- }
- func main() {
- tmpl := template.Must(template.ParseFiles("index.html"))
- http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
- tmpl.Execute(w, nil)
- })
- http.HandleFunc("/notifications", func(w http.ResponseWriter, r *http.Request) {
- ws, err := upgrader.Upgrade(w, r, nil)
- if err != nil {
- log.Fatal(err)
- }
- go sendNewMsgNotifications(ws)
- })
- fmt.Println("starting server at :8080")
- http.ListenAndServe(":8080", nil)
- }
- func newMessage() []byte {
- data, _ := json.Marshal(map[string]string{
- "email": fake.EmailAddress(),
- "name": fake.FirstName() + " " + fake.LastName(),
- "subject": fake.Product() + " " + fake.Model(),
- })
- return data
- }
|