Форум сайта python.su
Пытаюсь изучать вебсокеты по методичке,нашел задание и столкнулся с проблемой.Нужно создать клиент-серверное приложение с примерным принципом работы:Запускается сервер,ждет пока к нему подключится клиент,от клиента поступают какие либо данные,и после сервер генерирует и запускает новую страницу где реализована работа с клиентом,примерный код ниже.Собственно вопрос,как сделать так чтобы,сгенерированная страница,автоматически запускалась после генерирования.То есть открывается страница client.html,а после нее уже новая сгенерированная.Попытка заново вызвывать функцию get не удалась,документацию по нужной теме тоже не могу найти
import threading import tornado.websocket import tornado.web import tornado.ioloop import lxml.etree as ET #обработчик запросов к http серверу strfile="client.html" class MainHandler(tornado.web.RequestHandler): #обработка запроса get def get(self): print('Get') #передаем нашу страницу в которой реализована работа с клиентом self.render(strfile) #обработчик событий вебсоккетов class EchoWebSocket(tornado.websocket.WebSocketHandler): clients = []#массив клиентов fl = True index = 0 #процедура отправки клиенту текущего индекса через 3 сек def go(self,client): print('ok') if(self.fl): self.index=self.index+1 s = u'{"type": "chat", "data": "' +str(self.index) +'"}' print("send message : "+s) #посылаем сообщение клиенту client.write_message(s) #проверяются и датся права на действия с соккетом, здесь права даются всем def check_origin(self, origin): return True #обработка события открытия соединения def open(self): print("Client open") #добавляем клиента в список self.clients.append(self) self.fl = True #запускаем поток отправки сообщение клиенту self.go(self) #обработка прихода события от сервера######################## def on_message(self, message): print("Client message "+message) #парсим xml файл в dom dom = ET.parse("file.xml") #парсим шаблон в dom xslt = ET.parse("file.xslt") #получаем трансформер transform = ET.XSLT(xslt) #преобразуем xml с помощью трансформера xslt newhtml = transform(dom) #преобразуем из памяти dom в строку, возможно, понадобится указать кодировку strfile = ET.tostring(newhtml)###новая сгенерированная страница #обработка события закрытия соккета клиента############################ def on_close(self): self.fl = False #удаляем клиента из списка self.clients.remove(self) print("WebSocket closed") #создаем приложение tornado с обработчиком вебсоккетов и http сервером app = tornado.web.Application([(r"/ws", EchoWebSocket),(r'/', MainHandler)]) #прослушиваем на порту app.listen(10556) print("Start Server") #запускаем цикл прослушивания и обработки событий tornado.ioloop.IOLoop.instance().start()
Офлайн