【问题标题】:How is the socket.io directory recognisedsocket.io 目录是如何识别的
【发布时间】:2021-12-14 23:11:17
【问题描述】:

在线示例通常会包含使用的 socket.io 库

<script src="/socket.io/socket.io.js"></script>

但是,我想知道为什么即使我的目录中没有 socket.io 文件夹也能正常工作。运行node index.js 会自动创建这个socket.io 文件夹吗?

【问题讨论】:

  • 我很困惑。你有什么代码你正在苦苦挣扎吗?还是您在问如何安装/使用该库?
  • @evolutionxbox 我在问这部分代码是如何工作的,即使我没有创建 socket.io 文件夹
  • 您已经省略了所有解释如何制作项目、如何运行代码以及如何使用 socket.io 库的部分。你是用 npm 安装的吗?
  • 我做了npm init 来创建项目。然后,我使用 npm 安装了 express 和 socket.io。我使用node index.js 运行代码
  • 由于库是使用 npm 安装的,现在node_modules 中存在一个 socket.io 文件夹。

标签: javascript html node.js socket.io


【解决方案1】:

socket.io 服务器侦听所有以 /socket.io 开头的传入请求,并为自己“窃取”这些请求,使它们远离 socket.io 服务器共享的常规 http 服务器。

当 socket.io 服务器发现这是对socket.io.js 文件的请求时,socket.io 服务器然后进入它自己的node_modules/socket.io/client-dist 目录以获取客户端的socket.io.js 文件并将其发送回给客户。

如果您查看node_modules/socket.io/client-dist 目录中的内容,您会看到文件socket.io.js 坐在那里。这是 socket.io 服务器发送回客户端的文件。这是客户端代码,仅在服务器上用于在客户端请求时发送给客户端。

请记住,使用 nodejs http 服务器对传入路径的响应根本不一定与服务器上的文件目录有关。如果连接到 http 服务器的任何代码处理传入的请求,它可以决定它想要从服务器中的任何位置(无论是否来自文件)发送什么作为响应。只有特定的中间件工具(如 express.static())会在服务器硬盘上查找与传入请求匹配的目录。

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2022-01-01
    • 2014-07-12
    相关资源
    最近更新 更多