2016-08-15 51 views
0

我現在正在我的網站上創建一個腳本,這需要雙向連接(腳本是聊天室窗口)。但我們不想創建套接字。相反,我們希望使客戶端(腳本)和服務器都能夠相互發送http請求。
(順便說一下,網站服務器和腳本服務器是兩個不同的服務器)

客戶端(腳本)發送http請求到我們的服務器非常容易。但是,客戶端(腳本)監聽http請求是個大問題。

我已經做了一些搜索,但什麼也沒找到,也許這個要求很奇怪,很少被使用?嵌入在網頁中的腳本是否可以偵聽http請求?

在網頁上收聽http請求

謝謝!

+0

使用[WebSockets](https://en.wikipedia.org/wiki/WebSocket)並保持打開持續連接。 – Phylogenesis

+1

如果你不想插座,試試這個http://www.html5rocks.com/en/tutorials/eventsource/basics/ – Jag

+0

太棒了!這幾乎是我找到的!但似乎像IE /邊緣不支持!? –

回答

2

爲了獲得一個HTTP請求,你必須:

  1. 有可公開訪問的IP地址
  2. 有一個開放的端口,可公開訪問的
  3. 綁定一個程序,該端口監聽對於HTTP請求

瀏覽器在所有三個方面都下降了。你不能指望你所有的客戶端都有一個公開的,無阻塞的IP地址,特別是你想要打開的端口。但即便如此,瀏覽器也無法收聽傳入的請求;在瀏覽器中沒有API可以做到這一點,部分原因是瀏覽器是一個HTTP 客戶端而不是服務器,部分原因是因爲提供這樣一個API可能會爲各種攻擊者提供一個非常強大的API,部分原因是因爲它通常是無論如何,因爲無論如何瀏覽器都無法到達(見第1點),所以無用。

所以,不,你不能把瀏覽器變成HTTP服務器。

使用WebSockets。

+0

好像雖然我無法直接接收來自服務器的HTTP請求,但我可以先向服務器發送一個HTTP請求,並讓服務器使用'Server-Sent Events'(@ JAG在評論中的建議)開始發送數據。 –

+0

這與WebSocket基本相同,只是單向的,因此更受限制。瀏覽器打開與服務器的連接,並保持連接處於打開狀態。 – deceze