Javascript Socket.io返回400(错误请求)
我正在用NodeJS、EJS作为模板引擎和Socket.io构建一个聊天应用程序。当我在布局视图中初始化Socket.io实例时,它会出现以下错误: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
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'])时,它也可以工作服务器上的code>和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'])时,它也可以工作服务器上的code>和var socket=io({transports:['websocket']})客户端上的代码>