【问题标题】:GET http://localhost/socket.io/?EIO=3&transport=polling&t=LjIvLGU 404 (Not Found)GET http://localhost/socket.io/?EIO=3&transport=polling&t=LjIvLGU 404(未找到)
【发布时间】:2017-09-04 13:27:54
【问题描述】:

我的 Nodejs 和我的 js 代码有问题。

当我在控制台服务器中运行 Nodejs 时没有显示任何问题,但我总是在 Chrome 的控制台中收到错误:

GET http://localhost/socket.io/?EIO=3&transport=polling&t=LjIvLGU 404 (Not Found)

index.html

<head>
    <title>test</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="http://localhost:3000/socket.io/socket.io.js"></script>
</head>

script.js

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

users = [];
connections = [];

server.listen(process.env.PORT || 3000);

console.log("server up");

app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.php');
});

io.sockets.on('connection', function (socket) {

    socket.on('subscribe', function (data) {
        socket.join(data.room);
    });
    socket.on('arriv', function (data) {
        console.log(data);
        io.sockets.in('invitor').emit('send message',data);
    });

    socket.on('unsubscribe', function (data) {
        socket.leave(data.room);
    });
});

user.js

$(function () {
    var cid = $.session.get('company');
    console.log(cid);

    var socket = io.connect();

    socket.emit("subscribe", {room: "invitor"});

    socket.on("send message", function (data){
        $('#info').append("" + data.gid + "</br>");
    });
    $(document).on('click', '.123', function () {
        var gid = $(this).attr('id');
        socket.emit('arriv', {gid: gid});
    });
});

【问题讨论】:

标签: node.js sockets express websocket socket.io


【解决方案1】:

您似乎正在尝试通过 localhost 将您的套接字连接到其他地方而没有端口 3000。如果我测试您的代码 sn-ps 一切正常。您的错误消息显示缺少端口 3000 " GET http://localhost/socket.io/?EIO=3&amp;transport=polling&amp;t=LjIvLGU 404 (Not Found)"

如果您将 io.connect 更改为 var socket = io.connect('http://localhost:3000');,您可以尝试手动连接

【讨论】:

    【解决方案2】:

    " GET http://localhost/socket.io/?EIO=3&transport=polling&t=LjIvLGU 404 (Not Found)" 表示你的 socket.io 没有监听你想要的服务器。我的错误是我实例化了错误的服务器对象。

    在 app.js 文件中

    var server = app.listen(config.dev.port, () => {
      console.log("Listening ..");
    });
    
    var io = require('socket.io').listen(server);
    

    【讨论】:

    • 是的,这是一个有效的案例。说如果你有app = express(); server = http.createServer(app);io = socket(server); 然后你做app.listen() 你会得到那个错误
    【解决方案3】:

    经过大量搜索,这可行:

    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io('http://localhost:3000/');
    </script>
    

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2019-11-23
      • 1970-01-01
      • 2019-12-15
      相关资源
      最近更新 更多