Javascript 节点js express 500服务器错误

Javascript 节点js express 500服务器错误,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,当我试图调用通过nodejs服务器公开的方法时,我得到了500个错误 它说不支持协议版本 如果我删除socket.io配置,则对该方法的调用工作正常 var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); app.use(express.bodyParser()); app.use(express.sta

当我试图调用通过nodejs服务器公开的方法时,我得到了500个错误 它说不支持协议版本

如果我删除socket.io配置,则对该方法的调用工作正常

var express = require('express');

var app = express();

var http = require('http');

var server = http.createServer(app);

app.use(express.bodyParser());

app.use(express.static(__dirname + '/pollapp'));

app.get('/pollapp/PollServer.js', function (req, res) {
    res.sendfile(__dirname + '/index.htm');
});

app.get('/pollapp/PollServer.js/api/listPoll', function (req, res) {
    //....code
});

var io = require('./hostedSocket').listen(server);

io.configure(function () {
    io.set('resource', '/pollapp/PollServer.js'); //Where we'll listen for connections.
});

server.listen(process.env.PORT);
这里调用/pollapp/PollServer.js/api/listPoll会导致500服务器错误(不支持协议版本)

但如果我移除

    io.configure(function () {
        io.set('resource', '/pollapp/PollServer.js');
    });
然后一切都很顺利。
但是,如果我删除io.configure,则套接字不起作用。

您试图将
socket.io
资源位置与快速路由混合,而根据
socket.io
代码和您遇到的错误判断,快速路由是不起作用的

发生的情况是,任何以
/pollapp/PollServer.js
开头的请求都将由
socket.io
处理,而不会传递给Express

所以你需要把这两条路分开。也许这样效果更好(未经测试):

在您的客户中:

<script src="/pollapp/PollServer.js/socket.io/socket.io.js"></script>

尽管我想知道为什么不使用默认的
/socket.io
资源值

<script src="/pollapp/PollServer.js/socket.io/socket.io.js"></script>