【问题标题】:what port does the socketIO client listen to by default?socketIO 客户端默认监听哪个端口?
【发布时间】:2014-11-04 20:51:59
【问题描述】:

在客户端的io.connect()函数中不指定端口时,客户端监听哪个端口?

例如:

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

我问的原因是因为我在heroku上部署了这个应用程序的服务器端。前端是一个IOS应用程序。我用于前端的目标 C socketIO 库 (https://github.com/pkyeck/socket.IO-objc) 要求我指定一个端口。但我不确定我应该听哪个端口,因为这在服务器端不是静态的。

我用 javascript 编写了客户端程序进行测试,当我没有指定端口时它可以工作。

任何帮助将不胜感激。

【问题讨论】:

  • 如果 80 有效,那就是 80。为什么不试试呢?
  • 所以你是说当你不指定端口时,它使用端口80?端口 80 是我的猜测,我不确定。
  • 我认为 Express 服务器默认监听 3000 端口。
  • 在 Heroku 上却没有。您使用环境变量来指定端口。这不是静态的。例如: var port = Number(process.env.PORT || 5000); var app = express(); var server = require('http').createServer(app).listen(port);'
  • @Mash 我检查了,端口 80 不起作用

标签: node.js heroku socket.io


【解决方案1】:

它监听服务器监听的端口。想象一下,您将服务器设置为侦听端口8080。然后你在http://localhost:8080加载你的页面,服务器返回包含套接字相关JS代码的页面。

  1. 如果不指定任何端口或主机,如var socket = io.connect();,则默认为当前页面的主机和端口。
  2. 如果只指定与当前主机相同的主机,则默认为当前主机的端口。
  3. 如果只指定与当前主机不同的主机,如果协议是HTTP,则默认为端口80。如果协议是 HTTPS,则端口默认为443

这里是url.js解析器的相关代码。

【讨论】:

  • 我猜你的意思是当前主机的本地主机? (我对这个术语不是很熟悉)。另外,当前页面是什么意思?我检查了您链接到的 url.js 文件,您的其余答案似乎是正确的。
  • 当前主机不一定是本地主机。假设您正在从apple.com 加载您的页面。这是您当前的页面。如果您正在加载apple.com/mac,这是您的当前页面。指此时加载的页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 2018-05-05
  • 2022-07-12
  • 1970-01-01
相关资源
最近更新 更多