Socket.io.js не загружается - PullRequest
       10

Socket.io.js не загружается

0 голосов
/ 19 декабря 2018

Я работаю с 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

Мои файлы: app.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 )
   })

profile.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.js из socket.io-client и поместил его в socket.io, если бы я этого не сделал, я получил бы ошибку 404 файла в devtools.

Надеюсь, остальной код не требуется, я его не добавил, потому что он был много и не имеет ничего общего с socket.io.

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, вы должны попытаться немного разобраться, чтобы определить свою проблему.Вы явно не достигаете своего сокета.

Попробуйте создать сервер, подобный этому:

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")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...