Start.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package server
  2. import (
  3. "log"
  4. "net/http"
  5. "strconv"
  6. "time"
  7. "github.com/gorilla/websocket"
  8. )
  9. func (server *Server) Start() error {
  10. // Start the server
  11. http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
  12. handleConnections(w, r)
  13. })
  14. log.Fatal(http.ListenAndServe(server.ListenAddress+":"+strconv.Itoa(server.ListenPort), nil))
  15. time.Sleep(600 * time.Second)
  16. return nil
  17. }
  18. var upgrader = websocket.Upgrader{
  19. ReadBufferSize: 1024,
  20. WriteBufferSize: 1024,
  21. }
  22. func handleConnections(w http.ResponseWriter, r *http.Request) {
  23. conn, err := upgrader.Upgrade(w, r, nil)
  24. if err != nil {
  25. log.Println(err)
  26. return
  27. }
  28. defer conn.Close()
  29. log.Println("Starting server")
  30. go readMessages(conn)
  31. writeMessages(conn)
  32. }
  33. func readMessages(conn *websocket.Conn) {
  34. for {
  35. messageType, message, err := conn.ReadMessage()
  36. if err != nil {
  37. log.Println("Error reading message:", err)
  38. break
  39. }
  40. log.Printf("Received(%d): %s\n", messageType, message)
  41. // This sets the time-out for any incoming messages.
  42. // conn.SetReadDeadline(time.Now().Add(10 * time.Second))
  43. }
  44. }
  45. func writeMessages(conn *websocket.Conn) {
  46. for {
  47. err := conn.WriteMessage(websocket.TextMessage, []byte("Hello World!"))
  48. if err != nil {
  49. log.Println("Error writing message:", err)
  50. break
  51. }
  52. // This sets the time-out for any outgoing messages.
  53. // conn.SetWriteDeadline(time.Now().Add(10 * time.Second))
  54. time.Sleep(time.Second)
  55. }
  56. }