gpt4 book ai didi

javascript - socket.io.js文件在哪里?

转载 作者:行者123 更新时间:2023-12-03 12:02:57 25 4
gpt4 key购买 nike

我正在使用6.9.0版的socket.io。

<script src="/socket.io/socket.io.js"></script>
var socket= io();

当我有此代码时,我可以成功连接套接字服务器。但是我在本地目录 socket.io.js中找不到 "/socket.io"文件。

directory image

我刚刚发现 socket.io.js\socket.io\node_modules\socket.io-client\dist目录中。那我的 html文件是如何在 socket.io.js中找到 /socket的呢?

另外,即使没有服务器地址和端口号, var socket=io();代码如何与服务器连接?

最佳答案

<script src="/socket.io/socket.io.js"></script>,这将使客户端从与下载源相同的来源加载脚本。例如localhost。这意味着目标URL在这种情况下为http://localhost:PORT/socket.io/socket.io.js。这与无关,与该文件的位置无关。因为有一种提供该脚本的网络服务器(->您的本地主机)。该文件可能位于一个完全不同的目录中。

发生的是,您的客户端尝试从http://localhost:PORT/socket.io/socket.io.js加载源文件。服务器现在要做什么,取决于您的服务器体系结构和配置。例如,许多产品环境都使用reverse-proxy,如下所示:

 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();将导致另一个请求(您可以在浏览器的dev-tools中观察到),然后socket.io服务器知道存在传入的connect请求。

结论:
这取决于socket.io的实现方式,您可以在哪里最终找到该源文件。许多现代客户都使用reactAngular,将这些第三方源 bundle 在一起,并在最初的请求中下载该 bundle 包。在这种情况下,您永远不会在客户端上找到socket.io.js
如果您使用<script>标记加载脚本(如您所做的那样),则取决于目标URL和位于其后的服务器最后在何处查找脚本。

希望这能回答您的问题。

关于javascript - socket.io.js文件在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60148270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com