当我试图调用通过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,那么套接字就不能工作了。
发布于 2014-01-22 13:13:59
您正在尝试将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
资源值。
https://stackoverflow.com/questions/21280901
复制相似问题