socketIO 客户端默认监听哪个端口?

Posted

技术标签:

【中文标题】socketIO 客户端默认监听哪个端口?【英文标题】:what port does the socketIO client listen to by default? 【发布时间】: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 不起作用 【参考方案1】:

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

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

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

【讨论】:

我猜你的意思是当前主机的本地主机? (我对这个术语不是很熟悉)。另外,当前页面是什么意思?我检查了您链接到的 url.js 文件,您的其余答案似乎是正确的。 当前主机不一定是本地主机。假设您正在从apple.com 加载您的页面。这是您当前的页面。如果您正在加载apple.com/mac,这是您的当前页面。指此时加载的页面。

以上是关于socketIO 客户端默认监听哪个端口?的主要内容,如果未能解决你的问题,请参考以下文章

nginx 监听80 为啥php-fpm监听9000

ping 是哪个端口

SocketIO 通过 API 路由向客户端发送消息

Linux端口访问不成功

使用flask和flask-socketio配置nginx、uwsgi

oracle怎么配置监听