Javascript Socket.io返回400(错误请求)

Javascript Socket.io返回400(错误请求),javascript,node.js,express,socket.io,ejs,Javascript,Node.js,Express,Socket.io,Ejs,我正在用NodeJS、EJS作为模板引擎和Socket.io构建一个聊天应用程序。当我在布局视图中初始化Socket.io实例时,它会出现以下错误: GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=Lzz8iVx 400 (Bad Request) 以下是我在服务器上的代码: var express = require('express'); var bodyParser = require('bod

我正在用NodeJS、EJS作为模板引擎和Socket.io构建一个聊天应用程序。当我在布局视图中初始化Socket.io实例时,它会出现以下错误:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=Lzz8iVx 400 (Bad Request)
以下是我在服务器上的代码:

var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var layouts = require('express-ejs-layouts');
// other dependencies

var app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(layouts);

// Here goes the server
var server = require('http').Server(app);
var io = require('socket.io')(server);

io.set('transports', ['websocket']);

io.on('connection', function (socket) {
    console.log('A client connected!');
});

server.listen(3000, function () {
    console.log('Listening on 3000');
});
这是我的布局。ejs

<html>
    <head>
        <title>Node Chat</title>
        <link rel='stylesheet' href='stylesheets/bootstrap.min.css'>
        <link rel='stylesheet' href='/stylesheets/main.css' />
        <link href="https://fonts.googleapis.com/css?family=Anton" rel="stylesheet" type="text/css">
        <script src='https://code.jquery.com/jquery.js'></script>
        <script src='javascripts/bootstrap.min.js'></script>
    </head>
    <body>
        <%- body %>
        <script src="/socket.io/socket.io.js"></script>
        <script>
            var socket = io();
        </script>
    </body>
</html>

节点聊天
var socket=io();

虽然我根据Socket、io文档做了所有事情,但它导致了上述错误。我还尝试了几种变体,如更改为
var io=require('socket.io')。侦听(服务器)
,但效果并不理想。我还将
cors
库添加到我的应用程序中,但它也不起作用。这可能是什么问题?

您使用的是什么版本的
socket io
?尝试不使用
io.set('transports',['websocket')
@kemotoe当我第一次遇到这个问题时,我使用了
1.7.4
version。然后我升级到
2.0.4
,但效果不太好@MK12好的,我试图删除这一行,但它不起作用,我拿走了你的代码和socket.io 2.0.3,当我删除这一行
io.set('transports',['websocket'])时它就起作用了并且它给出了错误的请求错误,当您有
io.set('transports',['websocket'])时,它也可以工作
var socket=io({transports:['websocket']})
在客户端上您使用的是什么版本的
套接字io
?尝试不使用
io.set('transports',['websocket'])
@kemotoe当我第一次遇到这个问题时,我使用了
1.7.4
version。然后我升级到
2.0.4
,但效果不太好@MK12好的,我试图删除这一行,但它不起作用,我拿走了你的代码和socket.io 2.0.3,当我删除这一行
io.set('transports',['websocket'])时它就起作用了并且它给出了错误的请求错误,当您有
io.set('transports',['websocket'])时,它也可以工作
var socket=io({transports:['websocket']})