package websocket import ( "fts/handle" "github.com/gorilla/websocket" "log" "net/http" "strings" ) var( upgrader = websocket.Upgrader{ //允许跨域访问 CheckOrigin: func(r *http.Request) bool { return true }, } ) func UploadHandler(w http.ResponseWriter, r *http.Request) { //w.Write([]byte("hello")) //收到http请求(upgrade),完成websocket协议转换 //在应答的header中放上upgrade:websoket var ( conn *websocket.Conn err error //msgType int data []byte ) if conn, err = upgrader.Upgrade(w, r, nil); err !=nil { //报错了,直接返回底层的websocket链接就会终断掉 return } //得到了websocket.Conn长连接的对象,实现数据的收发 for { //Text(json), Binary //if _, data, err = conn.ReadMessage(); err != nil { if _, data, err = conn.ReadMessage(); err != nil { //报错关闭websocket goto ERR } //发送数据,判断返回值是否报错 log.Println("param uploadHandler:"+string(data)) params :=strings.Split(string(data),"|") err := handle.UploadCommand(conn,params[0],params[1],params[2],params[3]) if err!=nil{ log.Println(err) goto ERR } goto ERR } //error的标签 ERR: conn.Close() } func DownloadHandler(w http.ResponseWriter, r *http.Request) { //w.Write([]byte("hello")) //收到http请求(upgrade),完成websocket协议转换 //在应答的header中放上upgrade:websoket var ( conn *websocket.Conn err error //msgType int data []byte ) if conn, err = upgrader.Upgrade(w, r, nil); err !=nil { //报错了,直接返回底层的websocket链接就会终断掉 return } //得到了websocket.Conn长连接的对象,实现数据的收发 for { //Text(json), Binary //if _, data, err = conn.ReadMessage(); err != nil { if _, data, err = conn.ReadMessage(); err != nil { //报错关闭websocket goto ERR } //发送数据,判断返回值是否报错 log.Println("param downloadHandler:"+string(data)) params :=strings.Split(string(data),"|") err := handle.DownCommand(conn,params[0],params[1],params[2],params[3]) if err!=nil{ log.Println(err) goto ERR } goto ERR } //error的标签 ERR: conn.Close() } func InitLocalWorkSpaceHandler(w http.ResponseWriter, r *http.Request) { //w.Write([]byte("hello")) //收到http请求(upgrade),完成websocket协议转换 //在应答的header中放上upgrade:websoket var ( conn *websocket.Conn err error //msgType int data []byte ) if conn, err = upgrader.Upgrade(w, r, nil); err !=nil { //报错了,直接返回底层的websocket链接就会终断掉 return } //得到了websocket.Conn长连接的对象,实现数据的收发 for { //Text(json), Binary //if _, data, err = conn.ReadMessage(); err != nil { if _, data, err = conn.ReadMessage(); err != nil { //报错关闭websocket goto ERR } //发送数据,判断返回值是否报错 log.Println("param initLocalWorkSpaceHandler:"+string(data)) params :=strings.Split(string(data),"|") err := handle.InitLocalWorkSpace(conn,params[0],params[1]) if err!=nil{ log.Println(err) goto ERR } goto ERR } //error的标签 ERR: conn.Close() } func GetFolderFileInfoHandler(w http.ResponseWriter, r *http.Request) { //w.Write([]byte("hello")) //收到http请求(upgrade),完成websocket协议转换 //在应答的header中放上upgrade:websoket var ( conn *websocket.Conn err error //msgType int data []byte ) if conn, err = upgrader.Upgrade(w, r, nil); err !=nil { //报错了,直接返回底层的websocket链接就会终断掉 return } //得到了websocket.Conn长连接的对象,实现数据的收发 for { //Text(json), Binary //if _, data, err = conn.ReadMessage(); err != nil { if _, data, err = conn.ReadMessage(); err != nil { //报错关闭websocket goto ERR } //发送数据,判断返回值是否报错 log.Println("param GetFolderFileInfo:"+string(data)) err := handle.GetFolderFileInfo(conn,string(data)) if err!=nil{ log.Println(err) goto ERR } goto ERR } //error的标签 ERR: conn.Close() } func SubscriptionFileChangeHandler(w http.ResponseWriter, r *http.Request){ //w.Write([]byte("hello")) //收到http请求(upgrade),完成websocket协议转换 //在应答的header中放上upgrade:websoket var ( conn *websocket.Conn err error //msgType int data []byte ) if conn, err = upgrader.Upgrade(w, r, nil); err !=nil { //报错了,直接返回底层的websocket链接就会终断掉 return } //得到了websocket.Conn长连接的对象,实现数据的收发 for { //Text(json), Binary //if _, data, err = conn.ReadMessage(); err != nil { if _, data, err = conn.ReadMessage(); err != nil { //报错关闭websocket goto ERR } //发送数据,判断返回值是否报错 log.Println("param subscriptionFileChangeHandler:"+string(data)) err = handle.SubscriptionFileChange(conn,string(data)) if err != nil { //报错了 log.Println(err) goto ERR } } //error的标签 ERR: conn.Close()} func main() { }