javascript - 客户端找不到 socket.io.js

标签 javascript node.js sockets express socket.io

我已经阅读了关于该主题的所有其他帖子,但找不到解决我的问题的答案。我在默认端口或 5000 (process.env.PORT || 5000) 上运行 Express 服务器。然后我添加了 socket.io 但客户端找不到 socket.io.js 文件。经过一些测试后,我假设存在某种端口冲突或其他问题。这是我的服务器端代码:

var express = require('express'),
    app = express(),
    bodyParser = require('body-parser'),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

    app.set('port', (process.env.PORT || 5000));

编辑:客户端内容:enter image description here

编辑 2:此外,我认为这并不重要,但我正在 Heroku local 上对此进行测试。

编辑 3:目录结构:

--api
--images
--node_modules
--scripts
--pages
    main_page.ejs
--styles
composer
index.js 
npm-debug
package

编辑 4:凹凸

最佳答案

问题

Socket.IO 无法拦截加载 socket.io.js 的对 /socket.io/ 的请求。这意味着虚拟 socket.io.js 文件永远不会加载,您会收到上述 404 错误。

解决方案

改变这个:

app.set('port', (process.env.PORT || 5000));
app.listen(app.get('port', function() { ... });

对此:

app.set('port', (process.env.PORT || 5000));
server.listen(app.get('port'), function() { ... });

这可以防止 Express 立即拦截对 /socket.io/ 的请求并允许加载文件。

关于javascript - 客户端找不到 socket.io.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42324105/

相关文章:

Android套接字编程似乎默认使用SSL

javascript - Mongoose 数据库连接和架构

javascript - 我可以在 Canvas 中使用 ROP 吗? (我只关心性能原因)

javascript - 使用 TypeScript 仅加载 highlight.js 库,而不是默认加载所有语言

javascript - 在 nodemon 旁边运行 node-inspector?

javascript - 如何等到 jQuery 函数完成后再继续?

javascript - 谁来正确管理套接字上的 mongodb 数据(服务器端)

linux - 如果我有 10000 连接到我的运行在 linux 机器上的应用程序服务器,如果我 netstat 我应该看到什么?

javascript - 为 WebSocket [握手] 制作一个 PHP 套接字服务器

JavaScript:异常排序