文件同步
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

177 wiersze
4.1 KiB

  1. package websocket
  2. import (
  3. "fmt"
  4. "fts/handle"
  5. "github.com/gorilla/websocket"
  6. "log"
  7. "net/http"
  8. "strings"
  9. )
  10. var(
  11. upgrader = websocket.Upgrader{
  12. //允许跨域访问
  13. CheckOrigin: func(r *http.Request) bool {
  14. return true
  15. },
  16. }
  17. )
  18. func UploadHandler(w http.ResponseWriter, r *http.Request) {
  19. //w.Write([]byte("hello"))
  20. //收到http请求(upgrade),完成websocket协议转换
  21. //在应答的header中放上upgrade:websoket
  22. var (
  23. conn *websocket.Conn
  24. err error
  25. //msgType int
  26. data []byte
  27. )
  28. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  29. //报错了,直接返回底层的websocket链接就会终断掉
  30. return
  31. }
  32. //得到了websocket.Conn长连接的对象,实现数据的收发
  33. for {
  34. //Text(json), Binary
  35. //if _, data, err = conn.ReadMessage(); err != nil {
  36. if _, data, err = conn.ReadMessage(); err != nil {
  37. //报错关闭websocket
  38. goto ERR
  39. }
  40. //发送数据,判断返回值是否报错
  41. log.Println("param uploadHandler:"+string(data))
  42. params :=strings.Split(string(data),"|")
  43. err := handle.UploadCommand(conn,params[0],params[1],params[2],params[3])
  44. if err!=nil{
  45. fmt.Println(err)
  46. goto ERR
  47. }
  48. goto ERR
  49. }
  50. //error的标签
  51. ERR:
  52. conn.Close()
  53. }
  54. func DownloadHandler(w http.ResponseWriter, r *http.Request) {
  55. //w.Write([]byte("hello"))
  56. //收到http请求(upgrade),完成websocket协议转换
  57. //在应答的header中放上upgrade:websoket
  58. var (
  59. conn *websocket.Conn
  60. err error
  61. //msgType int
  62. data []byte
  63. )
  64. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  65. //报错了,直接返回底层的websocket链接就会终断掉
  66. return
  67. }
  68. //得到了websocket.Conn长连接的对象,实现数据的收发
  69. for {
  70. //Text(json), Binary
  71. //if _, data, err = conn.ReadMessage(); err != nil {
  72. if _, data, err = conn.ReadMessage(); err != nil {
  73. //报错关闭websocket
  74. goto ERR
  75. }
  76. //发送数据,判断返回值是否报错
  77. log.Println("param downloadHandler:"+string(data))
  78. params :=strings.Split(string(data),"|")
  79. err := handle.DownCommand(conn,params[0],params[1],params[2],params[3])
  80. if err!=nil{
  81. fmt.Println(err)
  82. goto ERR
  83. }
  84. goto ERR
  85. }
  86. //error的标签
  87. ERR:
  88. conn.Close()
  89. }
  90. func InitLocalWorkSpaceHandler(w http.ResponseWriter, r *http.Request) {
  91. //w.Write([]byte("hello"))
  92. //收到http请求(upgrade),完成websocket协议转换
  93. //在应答的header中放上upgrade:websoket
  94. var (
  95. conn *websocket.Conn
  96. err error
  97. //msgType int
  98. data []byte
  99. )
  100. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  101. //报错了,直接返回底层的websocket链接就会终断掉
  102. return
  103. }
  104. //得到了websocket.Conn长连接的对象,实现数据的收发
  105. for {
  106. //Text(json), Binary
  107. //if _, data, err = conn.ReadMessage(); err != nil {
  108. if _, data, err = conn.ReadMessage(); err != nil {
  109. //报错关闭websocket
  110. goto ERR
  111. }
  112. //发送数据,判断返回值是否报错
  113. log.Println("param initLocalWorkSpaceHandler:"+string(data))
  114. params :=strings.Split(string(data),"|")
  115. err := handle.InitLocalWorkSpace(conn,params[0],params[1])
  116. if err!=nil{
  117. fmt.Println(err)
  118. goto ERR
  119. }
  120. goto ERR
  121. }
  122. //error的标签
  123. ERR:
  124. conn.Close()
  125. }
  126. func SubscriptionFileChangeHandler(w http.ResponseWriter, r *http.Request){
  127. //w.Write([]byte("hello"))
  128. //收到http请求(upgrade),完成websocket协议转换
  129. //在应答的header中放上upgrade:websoket
  130. var (
  131. conn *websocket.Conn
  132. err error
  133. //msgType int
  134. data []byte
  135. )
  136. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  137. //报错了,直接返回底层的websocket链接就会终断掉
  138. return
  139. }
  140. //得到了websocket.Conn长连接的对象,实现数据的收发
  141. for {
  142. //Text(json), Binary
  143. //if _, data, err = conn.ReadMessage(); err != nil {
  144. if _, data, err = conn.ReadMessage(); err != nil {
  145. //报错关闭websocket
  146. goto ERR
  147. }
  148. //发送数据,判断返回值是否报错
  149. log.Println("param subscriptionFileChangeHandler:"+string(data))
  150. err = handle.SubscriptionFileChange(conn,string(data))
  151. if err != nil {
  152. //报错了
  153. fmt.Println(err)
  154. goto ERR
  155. }
  156. }
  157. //error的标签
  158. ERR:
  159. conn.Close()}
  160. func main() {
  161. }