2014-09-11 92 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

相关问题