节点js表示500服务器错误

时间:2014-01-22 10:54:07

标签: javascript node.js express socket.io

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

如果我删除了socket.io configration ......

,对该方法的调用是完美的
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,那么套接字无效。

1 个答案:

答案 0 :(得分:0)

您正在尝试将socket.io资源位置与Express路线混合使用 - 根据socket.io代码判断您遇到的错误 - 不是去上班。

/pollapp/PollServer.js开头的任何请求都会由socket.io处理,会传递给Express。

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

io.set('resource', '/pollapp/PollServer.js/socket.io');

在您的客户中:

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

虽然我想知道你为什么不只是使用默认的/socket.io资源值。