首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未加载Socket.io.js

未加载Socket.io.js
EN

Stack Overflow用户
提问于 2018-12-19 21:42:53
回答 1查看 345关注 0票数 0

我正在使用node.js和express.js,我试图将socket.io添加到我的一个.ejs文件中,但当我这样做时,我得到了一些奇怪的错误:

代码语言:javascript
复制
 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

然后,每秒:

代码语言:javascript
复制
 GET https://www.mywebsite.eu/socket.io/?EIO=3&transport=polling&t=MV6f2cR 404 (Not Found)                   socket.io.js:7

下面是我的文件: app.js:

代码语言:javascript
复制
    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 )
   })

profile.ejs:

代码语言:javascript
复制
   .....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无关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 22:05:14

我认为你应该试着把它分解一下,以找出你的问题。很明显,你没有到达你的插座。

试着有一个这样的服务器:

代码语言:javascript
复制
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)

和客户端:

代码语言:javascript
复制
var socket = io();

如果这行得通,那就试着添加剩下的代码吧。Ejs应该不是问题,因为它在提供服务之前会被编译成常规的HTML。一个问题是,如果您的客户端运行在与服务器不同的域(或端口)上。如果是这样,则必须在客户端站点上的io()中定义它,例如:var socket = io("http://localhost:8080")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53852528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档