我的任务是运行一个能够使用 websockets 和标准 HTTP 功能的 twisted 网络服务器。比如说,我需要使用 websockets 并连接到 hostname:9000
。我需要获取网页并使用 hostname:80/webpage
来获取它。我应该怎么做?
我试过类似的方法:
internet.TCPServer.__init__(self,9000, WebSocketFactory(factory))
internet.TCPServer.__init__(self,80, server.Site(HandlerHTTP))
而且它不工作:80 端口上的服务器启动,但 9000 端口上的服务器不启动。
最佳答案
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)
...
关于python - 使用 twisted 运行两个网络服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805894/