文件同步
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

378 líneas
9.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 OpenFileWithHandler(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 OpenFileWithHandler:"+string(data))
  149. err := handle.OpenFileWith(string(data))
  150. if err!=nil{
  151. log.Println(err)
  152. if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil {
  153. log.Println(err)
  154. goto ERR
  155. }
  156. goto ERR
  157. }
  158. goto ERR
  159. }
  160. //error的标签
  161. ERR:
  162. conn.Close()
  163. }
  164. func CheckForUpdatesHandler(w http.ResponseWriter, r *http.Request) {
  165. //w.Write([]byte("hello"))
  166. //收到http请求(upgrade),完成websocket协议转换
  167. //在应答的header中放上upgrade:websoket
  168. var (
  169. conn *websocket.Conn
  170. err error
  171. //msgType int
  172. data []byte
  173. )
  174. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  175. //报错了,直接返回底层的websocket链接就会终断掉
  176. return
  177. }
  178. //得到了websocket.Conn长连接的对象,实现数据的收发
  179. for {
  180. //Text(json), Binary
  181. //if _, data, err = conn.ReadMessage(); err != nil {
  182. if _, data, err = conn.ReadMessage(); err != nil {
  183. //报错关闭websocket
  184. goto ERR
  185. }
  186. //发送数据,判断返回值是否报错
  187. log.Println("param CheckForUpdatesHandler:"+string(data))
  188. err := handle.CheckForUpdates(string(data))
  189. if err!=nil{
  190. log.Println(err)
  191. if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil {
  192. log.Println(err)
  193. goto ERR
  194. }
  195. goto ERR
  196. }
  197. goto ERR
  198. }
  199. //error的标签
  200. ERR:
  201. conn.Close()
  202. }
  203. func InitClientConfigHandler(w http.ResponseWriter, r *http.Request) {
  204. //w.Write([]byte("hello"))
  205. //收到http请求(upgrade),完成websocket协议转换
  206. //在应答的header中放上upgrade:websoket
  207. var (
  208. conn *websocket.Conn
  209. err error
  210. //msgType int
  211. data []byte
  212. )
  213. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  214. //报错了,直接返回底层的websocket链接就会终断掉
  215. return
  216. }
  217. //得到了websocket.Conn长连接的对象,实现数据的收发
  218. for {
  219. //Text(json), Binary
  220. //if _, data, err = conn.ReadMessage(); err != nil {
  221. if _, data, err = conn.ReadMessage(); err != nil {
  222. //报错关闭websocket
  223. goto ERR
  224. }
  225. //发送数据,判断返回值是否报错
  226. log.Println("param InitClientConfigHandler:"+string(data))
  227. params :=strings.Split(string(data),"|")
  228. err := handle.InitClientConfig(params[0],params[1])
  229. if err!=nil{
  230. log.Println(err)
  231. if err := conn.WriteMessage(websocket.TextMessage, []byte("-1")); err != nil {
  232. log.Println(err)
  233. goto ERR
  234. }
  235. goto ERR
  236. }
  237. goto ERR
  238. }
  239. //error的标签
  240. ERR:
  241. conn.Close()
  242. }
  243. func GetFolderFileInfoHandler(w http.ResponseWriter, r *http.Request) {
  244. //w.Write([]byte("hello"))
  245. //收到http请求(upgrade),完成websocket协议转换
  246. //在应答的header中放上upgrade:websoket
  247. var (
  248. conn *websocket.Conn
  249. err error
  250. //msgType int
  251. data []byte
  252. )
  253. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  254. //报错了,直接返回底层的websocket链接就会终断掉
  255. return
  256. }
  257. //得到了websocket.Conn长连接的对象,实现数据的收发
  258. for {
  259. //Text(json), Binary
  260. //if _, data, err = conn.ReadMessage(); err != nil {
  261. if _, data, err = conn.ReadMessage(); err != nil {
  262. //报错关闭websocket
  263. goto ERR
  264. }
  265. //发送数据,判断返回值是否报错
  266. log.Println("param GetFolderFileInfo:"+string(data))
  267. err := handle.GetFolderFileInfo(conn,string(data))
  268. if err!=nil{
  269. log.Println(err)
  270. goto ERR
  271. }
  272. goto ERR
  273. }
  274. //error的标签
  275. ERR:
  276. conn.Close()
  277. }
  278. func WatchFileHandler(w http.ResponseWriter, r *http.Request) {
  279. //w.Write([]byte("hello"))
  280. //收到http请求(upgrade),完成websocket协议转换
  281. //在应答的header中放上upgrade:websoket
  282. var (
  283. conn *websocket.Conn
  284. err error
  285. //msgType int
  286. data []byte
  287. )
  288. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  289. //报错了,直接返回底层的websocket链接就会终断掉
  290. return
  291. }
  292. //得到了websocket.Conn长连接的对象,实现数据的收发
  293. for {
  294. //Text(json), Binary
  295. //if _, data, err = conn.ReadMessage(); err != nil {
  296. if _, data, err = conn.ReadMessage(); err != nil {
  297. //报错关闭websocket
  298. goto ERR
  299. }
  300. //发送数据,判断返回值是否报错
  301. log.Println("param WatchFile:"+string(data))
  302. err := handle.WatchFile(string(data))
  303. if err!=nil{
  304. log.Println(err)
  305. goto ERR
  306. }
  307. goto ERR
  308. }
  309. //error的标签
  310. ERR:
  311. conn.Close()
  312. }
  313. func SubscriptionFileChangeHandler(w http.ResponseWriter, r *http.Request){
  314. //w.Write([]byte("hello"))
  315. //收到http请求(upgrade),完成websocket协议转换
  316. //在应答的header中放上upgrade:websoket
  317. var (
  318. conn *websocket.Conn
  319. err error
  320. //msgType int
  321. data []byte
  322. )
  323. if conn, err = upgrader.Upgrade(w, r, nil); err !=nil {
  324. //报错了,直接返回底层的websocket链接就会终断掉
  325. return
  326. }
  327. //得到了websocket.Conn长连接的对象,实现数据的收发
  328. for {
  329. //Text(json), Binary
  330. //if _, data, err = conn.ReadMessage(); err != nil {
  331. if _, data, err = conn.ReadMessage(); err != nil {
  332. //报错关闭websocket
  333. goto ERR
  334. }
  335. //发送数据,判断返回值是否报错
  336. log.Println("param subscriptionFileChangeHandler:"+string(data))
  337. err = handle.SubscriptionFileChange(conn,string(data))
  338. if err != nil {
  339. //报错了
  340. log.Println(err)
  341. goto ERR
  342. }
  343. goto ERR
  344. }
  345. //error的标签
  346. ERR:
  347. conn.Close()}
  348. func main() {
  349. }