gpt4 book ai didi

python Tornado websockets 如何每 X 秒发送一次消息?

转载 作者:太空狗 更新时间:2023-10-29 18:28:03 25 4
gpt4 key购买 nike

我正在尝试拼凑一个允许 websockets 客户端连接到 Tornado 服务器的测试,我希望 Tornado 服务器每隔 X 秒向所有客户端发送一条消息。

我这样做的原因是因为 wbesockets 连接正在某处静静地断开,我想知道 websockets 服务器发送的周期性“ping”是否会保持连接。

恐怕这是一个非常菜鸟的问题,下面的代码相当困惑。我只是没有全神贯注于 Tornado,也没有足够的视野让它发挥作用。

import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web
import tornado.gen
import time
from tornado import gen

class WSHandler(tornado.websocket.WebSocketHandler):
def open(self):
print 'http://mailapp.crowdwave.com/girlthumb.jpg'
self.write_message("http://www.example.com/girlthumb.jpg")

def on_message(self, message):
print 'Incoming message:', message
self.write_message("http://www.example.com/girlthumb.jpg")


def on_close(self):
print 'Connection was closed...'

@gen.engine
def f():
yield gen.Task(tornado.ioloop.IOLoop.instance().add_timeout, time.time() + 8)
self.write_message("http://www.example.com/x.png")
print 'x'

@gen.engine
def g():
yield gen.Task(tornado.ioloop.IOLoop.instance().add_timeout, time.time() + 4)
self.write_message("http://www.example.com/y.jpg")
print 'y'

application = tornado.web.Application([
(r'/ws', WSHandler),
])

if __name__ == "__main__":
tornado.ioloop.IOLoop.instance().add_callback(f)
tornado.ioloop.IOLoop.instance().add_callback(g)
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()

最佳答案

您为什么不尝试在其中编写一个调度程序? :)

def schedule_func():
#DO SOMETHING#

#milliseconds
interval_ms = 15
main_loop = tornado.ioloop.IOLoop.instance()
sched = tornado.ioloop.PeriodicCallback(schedule_func,interval_ms, io_loop = main_loop)
#start your period timer
sched.start()
#start your loop
main_loop.start()

关于python Tornado websockets 如何每 X 秒发送一次消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17466847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com