i got error at log.Printf("Failed to read from pty master: %s", err)
在 2019年4月2日星期二 UTC+8上午12:05:05,feihong' yu写道: > > # server.js > ``` > > 'use strict' > > let app = require('http').createServer(handler) > let io = require('socket.io')(app) > > app.listen(3000) > > console.log('Listening at http://localhost:3000/') > > function handler (req, res) { > res.writeHead(200) > res.end('Testing server for http://github.com/wedeploy/gosocketio example.') > } > io.on('connection', function (socket) { > console.log('Connecting %s.', socket.id) > console.log(socket.request.headers) > > socket.on('messgae', (location) => { > // fail booking 50% of the requests > console.log('client message!') > console.log(location) > > > > socket.send("l") > socket.send("s") > socket.send("\n") > }) > > socket.on('result', (location) => { > // fail booking 50% of the requests > console.log('result message!') > console.log(location) > > }) > > > socket.on('find_tickets', (route) => { > console.log('Quote for tickets from %s to %s requested.', route.From, > route.To) > }) > > socket.on('error', (err) => { > console.error(err) > }) > > socket.on('disconnect', () => { > console.log('Disconnecting %s.', socket.id) > }) > }) > > ``` > > # client.go > ``` > > package main > > import ( > "bytes" > "encoding/gob" > "flag" > "fmt" > "log" > "net/http" > "os" > "os/exec" > "time" > > "github.com/Ali-IoT-Lab/socketio-client-go" > "github.com/kr/pty" > ) > > type wsPty struct { > Cmd *exec.Cmd // pty builds on os.exec > Pty *os.File // a pty is simply an os.File > } > > func (wp *wsPty) Start() { > var err error > args := flag.Args() > wp.Cmd = exec.Command(cmdFlag, args...) > wp.Cmd.Env = append(os.Environ(), "TERM=xterm") > wp.Pty, err = pty.Start(wp.Cmd) > if err != nil { > log.Fatalf("Failed to start command: %s\n", err) > } > } > > func (wp *wsPty) Stop() { > wp.Pty.Close() > wp.Cmd.Wait() > } > > func GetBytes(key interface{}) ([]byte, error) { > var buf bytes.Buffer > enc := gob.NewEncoder(&buf) > err := enc.Encode(key) > if err != nil { > return nil, err > } > return buf.Bytes(), nil > > } > > var cmdFlag string > > func init() { > flag.StringVar(&cmdFlag, "cmd", "/bin/bash", "command to execute on > slave side of the pty") > // TODO: make sure paths exist and have correct permissions > } > func main() { > > wp := wsPty{} > // TODO: check for errors, return 500 on fail > wp.Start() > > var Header http.Header = map[string][]string{ > "moja": {"ccccc, asdasdasdasd"}, > "terminal": {"en-esadasdasdwrw"}, > "success": {"dasdadas", "wdsadaderew"}, > } > > s, err := socketio.Socket("ws://127.0.0.1:3000") > if err != nil { > panic(err) > } > s.Connect(Header) > s.Emit("messgae", "hello server!") > > s.On("message", func(args ...interface{}) { > fmt.Println("-------------------11111-------------------------") > //fmt.Printf("%T\n", args[0]) > res, _ := GetBytes(args[0]) > fmt.Println(string(res)) > wp.Pty.Write(res) > }) > > go func() { > resBuf := make([]byte, 1024) > for { > > fmt.Println("-----------------------2222222---------------------------") > fmt.Println(string(resBuf)) > > n, err := wp.Pty.Read(resBuf) > if err != nil { > log.Printf("Failed to read from pty master: > %s", err) > return > } > fmt.Println(n) > // out := make([]byte, > base64.StdEncoding.EncodedLen(n)) > // base64.StdEncoding.Encode(out, resBuf[0:n]) > > // > fmt.Println("-----------------------3333333---------------------------") > // fmt.Println(string(resBuf[0:n])) > > // s.Emit("result", string(resBuf[0:n])) > } > > }() > > time.Sleep(2 * time.Second) > > //wp.Stop() > for { > // s.Emit("messgae", "hello server!") > // time.Sleep(2 * time.Second) > } > } > > > ``` > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.