我有一项任务是运行一个带有twisted的web服务器,可以使用websockets和标准的HTTP功能。说,我需要使用websockets并连接到hostname:9000
。我需要获取网页并使用hostname:80/webpage
来获取它。我应该怎么做?
我尝试过类似的事情:
internet.TCPServer.__init__(self,9000, WebSocketFactory(factory))
internet.TCPServer.__init__(self,80, server.Site(HandlerHTTP))
它不起作用:80端口上的服务器启动,但9000上的服务器没有启动。
答案 0 :(得分:4)
twisted.application.internet.TCPServer
的实例代表一个 TCP服务器。你不能初始化它两次并从中获得两台服务器。
我希望您提供的代码片段比您提供的更完整:
from twisted.application import internet
class TwoServers(TCPServer):
def __init__(self):
internet.TCPServer.__init__(self,9000, WebSocketFactory(factory))
internet.TCPServer.__init__(self,80, server.Site(HandlerHTTP))
这不起作用。这就像尝试使用两个整数的int
或两个序列的list
一样。而是制作两个TCPServer实例:
from twisted.application import service, internet
from websocket import WebSocketFactory
factory = ...
HandleHTTP = ...
holdMyServers = service.MultiService()
internet.TCPServer(9000, WebSocketFactory(factory)).setServiceParent(holdMyServers)
internet.TCPServer(80, server.Site(HandlerHTTP).setServiceParent(holdMyServers)
...