Javascript socket.io.js文件在哪里?
我使用的是socket.io版本6.9.0Javascript socket.io.js文件在哪里?,javascript,sockets,socket.io,Javascript,Sockets,Socket.io,我使用的是socket.io版本6.9.0 <script src="/socket.io/socket.io.js"></script> var socket= io(); var socket=io(); 当我有此代码时,我可以成功地连接到套接字服务器。但是我在本地目录“/socket.io”中找不到socket.io.js文件 我刚刚发现socket.io.js在\socket.io\node\u modules\socket.io client\dist目
<script src="/socket.io/socket.io.js"></script>
var socket= io();
var socket=io();
当我有此代码时,我可以成功地连接到套接字服务器。但是我在本地目录“/socket.io”
中找不到socket.io.js
文件
我刚刚发现socket.io.js
在\socket.io\node\u modules\socket.io client\dist
目录中。那么我的html
文件如何在/socket
中找到socket.io.js
另外,如何var socket=io()代码>即使没有服务器地址和端口号,代码也可以与服务器连接?
这将使客户端从其下载的相同来源加载脚本。例如localhost
。这意味着,在本例中,目标URL是http://localhost:PORT/socket.io/socket.io.js
。这与该文件的位置无关,因为有一种Web服务器提供该脚本(->您的本地主机)。该文件可能位于完全不同的目录中
发生的情况是,您的客户端尝试从http://localhost:PORT/socket.io/socket.io.js
。服务器现在的功能取决于您的服务器体系结构和配置。例如,许多prod环境使用反向代理
,如下所示:
location /socket.io/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_pass http://localhost:3011/socket.io/;
}
在本例中,这将把请求路由到端口3011
上的另一台服务器(在您的根服务器上“本地”运行)。有一个节点应用程序(socket.io服务器)正在运行,它知道现在要做什么:为socket.io.js
文件提供服务
完成此操作后,var socket=io()
将导致另一个请求(您可以在浏览器开发工具中观察到),然后socket.io
服务器知道有一个传入的connect
请求
结论:
这取决于socket.io是如何实现的,您最终可以在哪里找到源文件。许多现代客户端使用react
或Angular
,将这些第三方源捆绑在一起,并在初始请求中下载此捆绑包。在这种情况下,您永远不会在客户端上找到socket.io.js
。
如果您使用
标记加载脚本(就像您所做的那样),它取决于目标URL和它后面的服务器,在哪里可以找到脚本
希望这能回答你的问题