【问题标题】:Node js express 500 server errorNode js express 500服务器错误
【发布时间】:2014-01-22 10:54:06
【问题描述】:

当我尝试调用通过 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 则套接字将无法正常工作。

【问题讨论】:

    标签: javascript node.js express socket.io


    【解决方案1】:

    您正在尝试将 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 资源值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多