@@ -2,7 +2,6 @@ package cmd
22
33import (
44 "context"
5- "encoding/base64"
65 "fmt"
76 "io"
87 "log"
@@ -13,7 +12,7 @@ import (
1312 "github.com/containerd/console"
1413 "github.com/drycc/controller-sdk-go/api"
1514 "github.com/drycc/controller-sdk-go/ps"
16- "github.com/gorilla /websocket"
15+ "golang.org/x/net /websocket"
1716)
1817
1918// PsList lists an app's processes.
@@ -43,7 +42,12 @@ func (d *DryccCmd) PsExec(appID, podID string, tty, stdin bool, command []string
4342 if err != nil {
4443 return err
4544 }
46- conn , err := ps .Exec (s .Client , appID , podID , tty , stdin , command )
45+ request := api.Command {
46+ Tty : tty ,
47+ Stdin : stdin ,
48+ Command : command ,
49+ }
50+ conn , err := ps .Exec (s .Client , appID , podID , request )
4751 if err != nil {
4852 return err
4953 }
@@ -127,18 +131,13 @@ func printProcesses(appID string, input []api.Pods, wOut io.Writer) {
127131}
128132
129133func printExec (d * DryccCmd , conn * websocket.Conn ) error {
130- messageType , message , err := conn .ReadMessage ()
134+ var message string
135+ err := websocket .Message .Receive (conn , & message )
131136 if err != nil {
132- if websocket .IsUnexpectedCloseError (err , websocket .CloseGoingAway , websocket .CloseNormalClosure ) {
133- log .Printf ("error: %v" , err )
134- }
137+ log .Printf ("error: %v" , err )
135138 return nil
136139 }
137- if messageType == websocket .TextMessage {
138- d .Printf ("%s" , string (message ))
139- } else {
140- d .Printf (base64 .StdEncoding .EncodeToString (message ))
141- }
140+ d .Printf ("%s" , message )
142141 return nil
143142}
144143
@@ -151,22 +150,22 @@ func streamExec(conn *websocket.Conn, tty bool) error {
151150 }
152151 }
153152
154- recvQueue := make (chan [] byte )
153+ recvQueue := make (chan string )
155154 defer close (recvQueue )
156155 ctx , cancel := context .WithCancel (context .Background ())
157156 go func () {
158157 for {
159- messageType , message , err := conn .ReadMessage ()
160- if err != nil || messageType == websocket .CloseMessage {
158+ var message string
159+ err := websocket .Message .Receive (conn , & message )
160+ if err != nil {
161161 cancel ()
162162 break
163- } else {
164- recvQueue <- message
165163 }
164+ recvQueue <- message
166165 }
167166 }()
168167
169- sendQueue := make (chan [] byte )
168+ sendQueue := make (chan string )
170169 defer close (sendQueue )
171170 go func () {
172171 buf := make ([]byte , 1024 )
@@ -178,7 +177,7 @@ func streamExec(conn *websocket.Conn, tty bool) error {
178177 } else if err != nil {
179178 continue
180179 } else {
181- sendQueue <- buf [:size ]
180+ sendQueue <- string ( buf [:size ])
182181 }
183182 }
184183 }()
@@ -188,11 +187,11 @@ func streamExec(conn *websocket.Conn, tty bool) error {
188187 case <- ctx .Done ():
189188 return nil
190189 case message := <- sendQueue :
191- if err := conn . WriteMessage ( websocket .TextMessage , message ); err != nil {
190+ if err := websocket .Message . Send ( conn , message ); err != nil {
192191 return err
193192 }
194193 case message := <- recvQueue :
195- c .Write (message )
194+ c .Write ([] byte ( message ) )
196195 }
197196 }
198197}
0 commit comments