文件同步
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

214 rader
5.0 KiB

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