Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

68 lines
1.4KB

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gorilla/websocket"
  5. "log"
  6. "net/http"
  7. )
  8. const apiV1WebSocket = apiV1Prefix + "ws"
  9. // We'll need to define an upgradeToWs
  10. // this will require a Read and Write buffer size
  11. var upgradeToWs = websocket.Upgrader{
  12. ReadBufferSize: 1024,
  13. WriteBufferSize: 1024,
  14. }
  15. func apiV1WebSocketHandler(w http.ResponseWriter, r *http.Request) {
  16. upgradeToWs.CheckOrigin = func(r *http.Request) bool { return true }
  17. ws, err := upgradeToWs.Upgrade(w, r, nil)
  18. if err != nil {
  19. log.Println("cannot upgrade websocket", err)
  20. return
  21. }
  22. // helpful log statement to show connections
  23. log.Println("Websocket Api/V1: Client Connected", r.RemoteAddr)
  24. wsReader(ws)
  25. }
  26. func wsReader(conn *websocket.Conn) {
  27. for {
  28. // read in a message
  29. messageType, p, err := conn.ReadMessage()
  30. if err != nil {
  31. log.Println(err)
  32. return
  33. }
  34. WsEchoIncomingMessage(conn, string(p), messageType)
  35. //switch messageType {
  36. //case websocket.TextMessage:
  37. // WsProcessingTxtMessage(conn, string(p))
  38. // break
  39. //case websocket.BinaryMessage:
  40. // WsProcessingBinaryMessage(conn, p)
  41. // break
  42. //case websocket.PingMessage:
  43. // break
  44. //case websocket.PongMessage:
  45. // break
  46. //}
  47. }
  48. }
  49. func WsEchoIncomingMessage(conn *websocket.Conn, msg string, messageType int) {
  50. // print out that message for clarity
  51. fmt.Println(msg)
  52. // this is echo
  53. if err := conn.WriteMessage(messageType, []byte(msg)); err != nil {
  54. log.Println(err)
  55. return
  56. }
  57. }