在Tornado HTTP Hand中使用Autobahn/Twisted建立websocket连接

2024-06-26 14:56:02 发布

您现在位置:Python中文网/ 问答频道 /正文

问题: 客户端发送一个http请求。对于那个HTTP请求,我希望我的tornado服务器打开一个到外部服务器的websocket连接,并获得一些数据超时(这些数据我需要存储在数据库中)。我还需要能够处理多个用户对tornado服务器的请求。在

这是我的实现

from twisted.internet import reactor
from autobahn.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWS
from tornado.options import define, options, parse_command_line

class IndexHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
        self.write("This is your response")
        factory = WebSocketClientFactory("ws://localhost:7096")
        factory.protocol = BridgeSocket
        connectWS(factory)
        self.finish()
        reactor.run()

下面是我的套接字连接类:

^{pr2}$

这里运行反应堆()阻止了对Tornado web服务器的进一步http请求,因此我尝试了反应器.停止()一旦websocket工作完成并关闭。但现在我发现重启反应堆是不可能的。在

有没有更好的方法或者我可能遗漏的东西。。在


Tags: 数据fromimportself服务器webhttpfactory