moved websocket utils to separate package to allow use by the agent.
This commit is contained in:
		
							parent
							
								
									c55af94857
								
							
						
					
					
						commit
						98e46ff7cc
					
				| @ -171,7 +171,7 @@ func main() { | ||||
| 	wsConn := iowrappers.NewWebSocketConn(conn) | ||||
| 	defer wsConn.Close() | ||||
| 
 | ||||
| 	listener, err := yamux.Client(wsConn, nil) | ||||
| 	listener, err := yamux.Server(wsConn, nil) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
|  | ||||
| @ -3,39 +3,13 @@ package main | ||||
| import ( | ||||
| 	"cidebug/pkg/converge" | ||||
| 	"cidebug/pkg/iowrappers" | ||||
| 	"cidebug/pkg/websocketutil" | ||||
| 	"fmt" | ||||
| 	"github.com/gorilla/websocket" | ||||
| 	"log" | ||||
| 	"net/http" | ||||
| 	"regexp" | ||||
| ) | ||||
| 
 | ||||
| var upgrader = websocket.Upgrader{ | ||||
| 	ReadBufferSize:  1024, | ||||
| 	WriteBufferSize: 1024, | ||||
| } | ||||
| 
 | ||||
| func handleWebSocket(w http.ResponseWriter, r *http.Request, | ||||
| 	handler func(w http.ResponseWriter, r *http.Request, websockerConnection iowrappers.ReadWriteAddrCloser)) { | ||||
| 	conn, err := upgrader.Upgrade(w, r, nil) | ||||
| 	if err != nil { | ||||
| 		log.Println("Error upgrading to WebSocket:", err) | ||||
| 		return | ||||
| 	} | ||||
| 	wsConn := iowrappers.NewWebSocketConn(conn) | ||||
| 	defer wsConn.Close() | ||||
| 
 | ||||
| 	handler(w, r, wsConn) | ||||
| } | ||||
| 
 | ||||
| type WebSocketService struct { | ||||
| 	handler func(w http.ResponseWriter, r *http.Request, conn iowrappers.ReadWriteAddrCloser) | ||||
| } | ||||
| 
 | ||||
| func (endpoint *WebSocketService) handle(w http.ResponseWriter, r *http.Request) { | ||||
| 	handleWebSocket(w, r, endpoint.handler) | ||||
| } | ||||
| 
 | ||||
| func parsePublicId(path string) (publicId string, _ error) { | ||||
| 	pattern := regexp.MustCompile("^/[^/]+/([^/]+)$") | ||||
| 	matches := pattern.FindStringSubmatch(path) | ||||
| @ -48,8 +22,8 @@ func parsePublicId(path string) (publicId string, _ error) { | ||||
| func main() { | ||||
| 
 | ||||
| 	admin := converge.NewAdmin() | ||||
| 	registrationService := WebSocketService{ | ||||
| 		handler: func(w http.ResponseWriter, r *http.Request, conn iowrappers.ReadWriteAddrCloser) { | ||||
| 	registrationService := websocketutil.WebSocketService{ | ||||
| 		Handler: func(w http.ResponseWriter, r *http.Request, conn iowrappers.ReadWriteAddrCloser) { | ||||
| 			publicId, err := parsePublicId(r.URL.Path) | ||||
| 			if err != nil { | ||||
| 				log.Printf("Cannot parse public id from url: '%v'\n", err) | ||||
| @ -62,8 +36,8 @@ func main() { | ||||
| 			} | ||||
| 		}, | ||||
| 	} | ||||
| 	clientService := WebSocketService{ | ||||
| 		handler: func(w http.ResponseWriter, r *http.Request, conn iowrappers.ReadWriteAddrCloser) { | ||||
| 	clientService := websocketutil.WebSocketService{ | ||||
| 		Handler: func(w http.ResponseWriter, r *http.Request, conn iowrappers.ReadWriteAddrCloser) { | ||||
| 			publicId, err := parsePublicId(r.URL.Path) | ||||
| 			if err != nil { | ||||
| 				log.Printf("Cannot parse public id from url: '%v'\n", err) | ||||
| @ -77,8 +51,8 @@ func main() { | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	http.HandleFunc("/agent/", registrationService.handle) | ||||
| 	http.HandleFunc("/client/", clientService.handle) | ||||
| 	http.HandleFunc("/agent/", registrationService.Handle) | ||||
| 	http.HandleFunc("/client/", clientService.Handle) | ||||
| 
 | ||||
| 	// Start HTTP server
 | ||||
| 	fmt.Println("Rendez-vous server listening on :8000") | ||||
|  | ||||
| @ -85,11 +85,12 @@ func (admin *Admin) addAgent(publicId string, conn io.ReadWriteCloser) (*Agent, | ||||
| 	if agent != nil { | ||||
| 		return nil, fmt.Errorf("A different agent with same publicId '%s' already registered", publicId) | ||||
| 	} | ||||
| 	session, err := yamux.Client(conn, nil) | ||||
| 
 | ||||
| 	clientSession, err := yamux.Client(conn, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	agent = NewAgent(publicId, session) | ||||
| 	agent = NewAgent(publicId, clientSession) | ||||
| 	admin.agents[publicId] = agent | ||||
| 	admin.logStatus() | ||||
| 	return agent, nil | ||||
|  | ||||
							
								
								
									
										34
									
								
								pkg/websocketutil/services.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								pkg/websocketutil/services.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| package websocketutil | ||||
| 
 | ||||
| import ( | ||||
| 	"cidebug/pkg/iowrappers" | ||||
| 	"github.com/gorilla/websocket" | ||||
| 	"log" | ||||
| 	"net/http" | ||||
| ) | ||||
| 
 | ||||
| var upgrader = websocket.Upgrader{ | ||||
| 	ReadBufferSize:  1024, | ||||
| 	WriteBufferSize: 1024, | ||||
| } | ||||
| 
 | ||||
| func handleWebSocket(w http.ResponseWriter, r *http.Request, | ||||
| 	handler func(w http.ResponseWriter, r *http.Request, websockerConnection iowrappers.ReadWriteAddrCloser)) { | ||||
| 	conn, err := upgrader.Upgrade(w, r, nil) | ||||
| 	if err != nil { | ||||
| 		log.Println("Error upgrading to WebSocket:", err) | ||||
| 		return | ||||
| 	} | ||||
| 	wsConn := iowrappers.NewWebSocketConn(conn) | ||||
| 	defer wsConn.Close() | ||||
| 
 | ||||
| 	handler(w, r, wsConn) | ||||
| } | ||||
| 
 | ||||
| type WebSocketService struct { | ||||
| 	Handler func(w http.ResponseWriter, r *http.Request, conn iowrappers.ReadWriteAddrCloser) | ||||
| } | ||||
| 
 | ||||
| func (endpoint *WebSocketService) Handle(w http.ResponseWriter, r *http.Request) { | ||||
| 	handleWebSocket(w, r, endpoint.Handler) | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user