【问题标题】:Socket.io cdn won't connect and returns a socket.io folder with socket.io.js script that returns an html file in console?Socket.io cdn 不会连接并返回带有 socket.io.js 脚本的 socket.io 文件夹,该脚本在控制台中返回一个 html 文件?
【发布时间】:2020-06-11 23:05:21
【问题描述】:

我将功能齐全的本地 php/nodejs 应用程序部署到现在已损坏的 heroku。 heroku 的 php 文档中的 echo '<script src="/socket.io/socket.io.js"></script>'; 返回 Uncaught SyntaxError: Unexpected token '<'。来一探究竟,cdn是连不上的。 heroku 服务器实际上是试图在控制台中返回一个带有路径 /socket.io/socket.io.js 的脚本。当然该文件不存在,所以它返回一个 php 文件(不是它包含的文件),因此 SyntaxError: Unexpected token '<' 因为它返回的随机文件中的 html。我将 php 和 nodejs heroku buildpacks 添加到我的应用程序中。我明白发生了什么,只是不知道为什么或如何解决它。

【问题讨论】:

  • 仅供参考,链接 <script src="/socket.io/socket.io.js"></script> 用于当您的页面来自的服务器是连接了服务器端 socket.io 的 Express 服务器时使用。如果您有该配置,那么服务器端 socket.io 将在链接 /socket.io/socket.io.js 处提供 socket.io 的客户端版本,并且该链接将起作用。我不知道您的 PHP 配置如何影响这一点,因为此链接所指向的服务器需要是其中的一个,而不是两者。如果正确安装了 socket.io 服务器端代码,则客户端代码不需要 CDN。
  • 并且,让socket.io服务器以这种方式提供socket.io客户端,自动保持两个版本匹配。如果您为客户端使用 CDN,则每次升级服务器端 socket.io 代码时都必须修改 CDN 链接以保持两个版本同步(如果您忘记了,这是一种破坏站点的简单方法)。
  • 那么问题是我没有使用 express 来返回我的页面,所以 src 路径不起作用。我完全明白了,现在。我有两个后端,而且我的电线交叉了。

标签: php node.js heroku socket.io


【解决方案1】:

您的分析是正确的。脚本链接错误。

这里是 Socket.io 的链接:https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js

所有 CDN 链接都列出了here。希望这会有所帮助!

【讨论】:

  • heroku 和 socket.io 都没有说要如此明确地添加 cdn(我读过的几十个这样的问题也没有)。不敢相信这真的有效,非常感谢!
  • Socket.io 在网站上有这个。如果这有帮助,请将此问题标记为已解决。
  • 好吧,为了更彻底,我从一个 php 应用开始,并决定在聊天应用的后端添加 socket.io。虽然我可以在客户端设置主机和端口,但一切正常,但我不能在生产中这样做,因为端口是一个环境变量并且它会发生变化。我想我可能只是快递服务那个特定的网页。通过端口号编写所有新代码会很糟糕。我将标记为已解决。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 2021-04-03
  • 2020-08-04
  • 2013-12-23
  • 1970-01-01
相关资源
最近更新 更多