2013-07-23 44 views
1

我有一个任务来运行一个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没有。

回答

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) 

... 
+1

伟大的,这正是我怀疑你的答案给了我一个完整的理解。谢谢! –