javascript - Socket.io.js 未加载

标签 javascript node.js sockets websocket socket.io

我正在使用node.js和express.js,并且我正在尝试将socket.io添加到我的.ejs文件之一,但是当我这样做时,我遇到了一些奇怪的错误:

 Failed to load resource: the server responded with a status of 404 (Not Found)                socket.io/?EIO=3&transport=polling&t=MV6f2K2
 Failed to load resource: the server responded with a status of 404 (Not Found)                                     socket.io/?EIO=3&transport=polling&t=MV6f2cR

然后,每秒:

 GET https://www.mywebsite.eu/socket.io/?EIO=3&transport=polling&t=MV6f2cR 404 (Not Found)                   socket.io.js:7

这是我的文件: 应用程序.js:

    const fs = require('fs');
    const express = require('express');
    const app = express();
    const http = require('http').Server(app);
    const fileUpload = require('express-fileupload');
    var io = require('socket.io')(http);
    .....
    var router = express.Router();
    var pathView = __dirname + "/views/";
    app.use(express.urlencoded({extended: true}));
    app.use(express.json());
    const listenPort = 8000;
    app.set('view engine', 'ejs');
    app.use(express.static('public'));
    app.use('/public', express.static('public'));
    app.use('/scripts', express.static(__dirname + '/node_modules/'));
    //SOCKET IO PART

    io.on('connection', function(socket){
    console.log('a user connected');
    });

   //SOCKET IO PART

   ..........
   app.get & app.post requests
   ..........

   app.use( "/", router);

   // Not found
   app.use("*",function(req,res){
   res.setHeader('Content-Type', 'text/html');
   res.status(404).send('Page introuvable !');
   });

   // Run server
   app.listen(listenPort, function () {
   console.log('Example app listening on port ' + listenPort )
   })

配置文件.ejs:

   .....content of the page(it's working well).......
   <%- include('scripts') -%>
   <script src="/scripts/socket.io/socket.io.js"></script>

   </html>

   <script>

   var socket = io();

   </script>

我必须提到,我从 socket.io-client 复制了 socket.io.js 并将其放入了 socket.io 中,如果我不这样做,我会在 devtools 中收到 404 文件丢失错误。

希望其余的代码不是必需的,我没有添加它,因为它太多了,而且与socket.io无关。

最佳答案

我认为你应该尝试将其分解一点以找出你的问题。显然你没有到达你的 socket 。

尝试拥有一个像这样的服务器:

var express         = require('express')
var app             = express()
var server          = require('http').Server(app)
var io              = require('socket.io')(server)

io.on('connection', function(socket) {  
    console.log('Socket did connect');
});

server.listen(8080)

和客户:

var socket = io();

如果这有效(这应该是有效的),请尝试添加其余的代码。 Ejs 不应该成为问题,因为它在提供之前已编译为常规 HTML。 如果您的客户端在与服务器不同的域(或端口)上运行,则会出现问题。如果是这样,您必须在客户端站点上的 io() 内定义它,例如: var socket = io("http://localhost:8080")

关于javascript - Socket.io.js 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852528/

相关文章:

javascript - Electron/NodeJS/VSCode : What kind of syntax or infrastructure problems won't show in Debug Console?

javascript - Node JS mysql 从数据库中删除多个条件

c - 'address already in use' (EADDRINUSE) 与 'bind' 系统调用在不同上下文中的问题

node.js - Despotify、node-spotify-web 和 Spotify 轨道 ID 表示

javascript - 为什么我的数组在 .then() 之后是空的? JavaScript

c++ - 在线程之间发送和读取字符串

c - 如何从套接字读取无符号字符

javascript - 如何使用正则表达式对数组中的 Javascript 对象进行排序

javascript - 单击链接后如何显示水平列表?

javascript - 刷新数据表数据而不重新加载整个页面