1

我的任务是运行一个能够使用 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 上的服务器没有。

4

1 回答 1

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)

...
于 2013-07-23T10:18:59.487 回答