2014-09-11 91 views
1

當您不在客戶端的io.connect()函數中指定端口時,客戶端將監聽哪個端口?默認情況下,socketIO客戶端偵聽哪個端口?

如:

var socket = io.connect('http://example.com/);// listening to port 80? 

我想問的原因是因爲我部署在Heroku此應用程序的服務器端。前端是一個IOS應用程序。我用於前端的目標C socketIO庫(https://github.com/pkyeck/socket.IO-objc)要求我指定一個端口。但是我不確定我應該聽什麼端口,因爲這在服務器端不是靜態的。

我在javascript中編寫客戶端程序進行測試,它在我不指定端口時起作用。

任何幫助將非常感激。

+0

如果80工作,那麼它是80.爲什麼不嘗試呢? – mash 2014-09-11 03:10:10

+0

所以你說當你不指定端口,那麼它的使用端口80?端口80是我的猜測,我不知道這是肯定的。 – SivaDotRender 2014-09-11 03:20:43

+0

我認爲Express服務器默認偵聽端口3000。 – 2014-09-11 04:13:11

回答

6

它偵聽服務器偵聽的端口。想象一下,你設置你的服務器來監聽端口8080。然後,您在http://localhost:8080加載頁面,服務器返回包含與套接字相關的JS代碼的頁面。

  1. 如果不指定任何端口或主機爲var socket = io.connect();,則默認爲當前頁面的主機和端口。
  2. 如果只指定與當前主機相同的主機,則默認爲當前主機的端口。
  3. 如果您只指定與當前主機不同的主機,那麼如果協議是HTTP,則默認爲端口80。如果協議是HTTPS,則端口默認爲443

下面是url.js解析器的相關代碼。

+0

我猜你是指當前主機的本地主機? (我對這個術語不太熟悉)。此外,當前頁面是什麼意思?我檢查了你鏈接到的url.js文件,其餘的答案似乎是正確的。 – SivaDotRender 2014-09-11 12:41:56

+0

當前主機不一定是他的本地主機。想象一下你從http://apple.com加載你的網頁。這是你當前的頁面。如果您正在加載http://apple.com/mac,則這是您當前的頁面。它指的是此時加載的頁面。 – Eye 2014-09-11 23:38:32

相關問題