2012-06-25 62 views
2

我正在運行一個實時Web應用程序,它在後端使用Symfony 2 PHP框架。我想爲我的實時交互實現websockets。是否可以在我的Symfony 2服務器所在的同一臺機器上安裝node.js服務器來處理websocket連接?如果是這樣,打開另一個端口(比如說81)來處理websocket連接是否是標準的?nodejs和Symfony 2的Websockets

回答

2

是的,這是可能的。爲什麼不?這只是另一個應用程序。

至於第二個問題。您可以打開另一個端口,這很容易處理(WebSocket不受限於跨源策略),但可能會丟失一些數據(cookie),或者您可以放置​​一個代理,它將HTTP請求發送到Web服務器和WS請求以Node.JS服務器。後者可以通過使用特殊標題Upgrade: websocket來識別。無論哪種方式WebSocket服務器必須監聽不同的端口(除非您完全在Node.JS中開發應用程序)。

+0

對於你的第二點,我不同意。一個Websocket是Raw Tcp而不是HTTP,所以當你使用真正的websocket時你需要一個暴露的端口runnning node.js – mblaettermann

+0

@mblaettermann這是不正確的。 Websocket連接作爲普通的HTTP連接啓動,之後升級爲TCP。除了TCP和HTTP可以在同一個端口上處理(爲什麼不?)。人們不這樣做的唯一原因是因爲代碼難以維護。 – freakish