2013-07-23 84 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

偉大的,這正是我懷疑你的答案給了我一個完整的理解。謝謝! –