powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопрос по tornado python от новичка
1 сообщений из 1, страница 1 из 1
Вопрос по tornado python от новичка
    #39755050
SilliGirl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь по методичке написать клиент-серверное приложение на питоне с примерным принципом работы:Запускается сервер,ждет пока к нему подключится клиент,от клиента поступают какие либо данные,и после сервер генерирует и запускает новую страницу где реализована работа с клиентом,примерный код ниже.Собственно вопрос,как сделать так чтобы,сгенерированная страница,автоматически запускалась после генерирования.Попытка заново вызвывать функцию get не удалась,документацию по нужной теме тоже не могу найти :(
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
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'/', HomeHandler)])
#прослушиваем на порту
app.listen(10556)
print("Start Server")
#запускаем цикл прослушивания и обработки событий
tornado.ioloop.IOLoop.instance().start()
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопрос по tornado python от новичка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]