From 43c0770770cc9fe40f5dd205b35e8ffb6bafdd20 Mon Sep 17 00:00:00 2001
From: ibuler <ibuler@qq.com>
Date: Fri, 6 Nov 2015 12:09:23 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=8E=9F=E7=94=9Fselect?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 run_websocket.py | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/run_websocket.py b/run_websocket.py
index 7283ed9b..32083aa5 100644
--- a/run_websocket.py
+++ b/run_websocket.py
@@ -21,7 +21,8 @@ from pyinotify import WatchManager, Notifier, ProcessEvent, IN_DELETE, IN_CREATE
 # from gevent import monkey
 # monkey.patch_all()
 # import gevent
-from gevent.socket import wait_read, wait_write
+# from gevent.socket import wait_read, wait_write
+import struct, fcntl, signal, socket, select, fnmatch
 
 import paramiko
 
@@ -200,16 +201,18 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler):
         try:
             data = ''
             while True:
-                wait_read(self.chan.fileno())
-                recv = self.chan.recv(1024)
-                if not len(recv):
-                    return
-                data += recv
-                try:
-                    self.write_message(json.dumps({'data': data}))
-                    data = ''
-                except UnicodeDecodeError:
-                    pass
+                r, w, e = select.select([self.chan, sys.stdin], [], [])
+                if self.chan in r:
+                    recv = self.chan.recv(1024)
+                    print recv
+                    if not len(recv):
+                        return
+                    data += recv
+                    try:
+                        self.write_message(json.dumps({'data': data}))
+                        data = ''
+                    except UnicodeDecodeError:
+                        pass
         finally:
             self.close()
 
-- 
2.18.0