【问题标题】:POST http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NQUneY3 400 (Bad Request) in ejs and nodejs在 ejs 和 nodejs 中发布 http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NQUneY3 400 (Bad Request)
【发布时间】:2021-04-03 22:52:14
【问题描述】:

我对这个 socket.io 很陌生。

我有代码,这是一个节点服务器代码:

var express = require("express");
var app = express();
var http = require("http").createServer(app);
var socketIO = require("socket.io")(http);
var socketID = "";

socketIO.on("connection", function (socket) {
  console.log("User is conneected ", socket.id);
  socketID = socket.id;
});

这是一个 ejs 文件的代码:

......

<script src="/public/js/socket.io.js"></script>

<script>
......
var socketIO = io("http://localhost:3000");
......
</script>
...... 

而socket.io.js文件是here

我试过了,但没有任何效果。每当我刷新页面时都会弹出相同的错误。 我对此很陌生,我真的很想尽快把它整理好!!

socket.on之后我已经有了监听功能:

http.listen(3000, function () {
  console.log("Server has started running!!");
  .........................
.............
})

【问题讨论】:

    标签: javascript node.js socket.io ejs


    【解决方案1】:

    下面的代码对我有用。

    var express         = require('express');
    var app             = express();
    var server          = require('http').Server(app);
    var io              = require('socket.io')(server);
    
    io.sockets.on('connection', function (socket) {
            console.log(socket);
    })
    
    server.listen(3000, function(){
        console.log('listening on *:3000');
    });
    
    
    <script src="/socket.io/socket.io.js" > </script>
    
    <script>
        $(function () {
            var socket = io.connect();
        });
    </script>
    

    【讨论】:

    • 我假设您提到的socket.io.jshttps://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js 中的相同,但仍然无法正常工作。
    • 那么我认为你应该启动 websocket 协议进行轮询。 ` var socket = io.connect("localhost:3000", {transports: ['websocket']});`
    • 我认为@NarendraKumawat 是对的{transports: ['websocket']} 你应该试试它是否有效。带有latest 3.0.4 链接。
    • 现在我收到此错误`GET localhost:3000 404 (Not Found)`。但是前一个已经走了!
    • 我认为它起作用了,这个错误是另外一回事。非常感谢,@NarendraKumawat
    【解决方案2】:

    您提到的socket.io.js 与https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js.. 中的相同。检查 package.json 中已安装的 serail io 版本,并将相同版本放置在路径 socket.io/2.2.0 中它会工作

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2019-12-15
    • 2020-10-16
    • 2017-09-04
    • 2017-03-11
    相关资源
    最近更新 更多