def main(): # handle command line options parser = OptionParser(usage="usage: %prog [options]", version="%prog 1.0") parser.add_option("--host", default='', type='string', action="store", dest="host", help="hostname (localhost)") parser.add_option("--port", default=8000, type='int', action="store", dest="port", help="port (8000)") (options, args) = parser.parse_args() print("Welcome to ErgServer!") # initialize connection to erg connected_ergs = pyrow.find() if len(connected_ergs) == 0: print("No ergs found.") else: print("{} erg(s) found. Starting ErgServer.".format(len(connected_ergs))) print("(NOTE: This will run forever. Press ctrl+c to quit)") try: message_queue = Queue(20) # connect to erg and monitor it using a new process erg = pyrow.pyrow(connected_ergs[0]) prc_monitor = Process(target=monitor_erg, args=(message_queue, erg)) prc_monitor.start() # start the websocket server to accept client connections erg_server = SimpleWebSocketServer(options.host, options.port, ErgSocket, message_queue) def close_sig_handler(signal, frame): erg_server.close() sys.exit(0) signal.signal(signal.SIGINT, close_sig_handler) erg_server.serveforever() except: pass print("Closing ErgServer. See you next time!") try: prc_monitor.terminate() except: pass sys.exit(0)
def handleMessage(self): # print("--->") for client in clients: if (client == self.address): # print(self.data) if (self.opcode == 0): self.saveFile(self.data) def handleConnected(self): print(self.address, 'connected') # for client in clients: # client.sendMessage(self.address[0] + u' - connected') #self.fileName = 'voice_factory_test.pcm' self.fileCreate = False clients.append(self.address) print("append ok") def handleClose(self): clients.remove(self.address) print(self.address, 'closed') # for client in clients: # client.sendMessage(self.address[0] + u' - disconnected') try: server = SimpleWebSocketServer(interface, port, WsRec) server.serveforever() except KeyboardInterrupt: print('^C received, shutting down the web server') server.close()
for port, desc, hwid in iterator: #print("%-20s" % (port,)) #print(" desc: %s" % (desc,)) #print(" hwid: %s" % (hwid.upper(),)) #print(hwid[-9:]) available.append((port, port)) if (('USB VID:PID=0403:BD90' in hwid.upper()) or ('USB VID:PID=403:BD90' in hwid.upper())): default = len(available) - 1 return {'ports': available, 'default': default } def printTrace(): import traceback, os exc_type, exc_obj, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] print(exc_type,sys.exc_info()[1],fname, exc_tb.tb_lineno) print(traceback.format_exc()) if __name__ == "__main__": #start http server as a subprocess if sys.version_info[0] >= 3: subprocess.Popen("cd gui && python -m http.server " + str(HTTP_PORT), shell=True) else: subprocess.Popen("cd gui && python -m SimpleHTTPServer " + str(HTTP_PORT), shell=True) # websocket server server = SimpleWebSocketServer('', WS_PORT, PicaxeInterface) server.serve()
# handle websocket requests here self.websockserver.serve(continous=False) # timeouts immediatly def write(self, string): if self.port and self.port.writable(): self.sendData.append(to_bytes(string.encode('iso-8859-1'))) #return self.port.write(string.encode('iso-8859-1')) def printTrace(): import traceback, os exc_type, exc_obj, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] print(exc_type,sys.exc_info()[1],fname, exc_tb.tb_lineno) print(traceback.format_exc()) if __name__ == "__main__": #start http server as a subprocess if sys.version_info[0] >= 3: subprocess.Popen("cd gui && python -m http.server " + str(HTTP_PORT), shell=True) else: subprocess.Popen("cd gui && python -m SimpleHTTPServer " + str(HTTP_PORT), shell=True) # websocket server websockserver = SimpleWebSocketServer('', WS_PORT, PicaxeInterface, 0.01) websockserver.serialIface = SerialInterface(websockserver) websockserver.serialIface.serveforever()
clients.append(self) print (self.address, 'connected') # REST APIs to Agent Client for api in agent_apis: self.sendMessage(json.dumps(api, ensure_ascii=False)) def handleClose(self): clients.remove(self) print (self.address, 'closed') if __name__ == "__main__": parser = OptionParser(usage="usage: %prog [options]", version="%prog 1.0") parser.add_option("--host", default='', type='string', action="store", dest="host", help="hostname (localhost)") parser.add_option("--port", default=8000, type='int', action="store", dest="port", help="port (8000)") parser.add_option("--ssl", default=1, type='int', action="store", dest="ssl", help="ssl (1: on, 0: off (default))") parser.add_option("--certfile", default='./server.crt', type='string', action="store", dest="cert", help="Server Cert self-signed or CA-signed (./server.crt)") parser.add_option("--keyfile", default='./server.key', type='string', action="store", dest="key", help="Server Private key file (./server.key)") parser.add_option("--ver", default=ssl.PROTOCOL_TLSv1, type=int, action="store", dest="ver", help="ssl version") (options, args) = parser.parse_args() if options.ssl: server = SimpleSSLWebSocketServer(options.host, options.port, SimpleWebSocket, options.cert, options.key, version=options.ver) else: server = SimpleWebSocketServer(options.host, options.port, cls) server.serveforever()