2014-01-22 65 views
0

當我試圖使通過的NodeJS服務器暴露的方法,我得到500錯誤 它說,協議版本不支持節點JS快遞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,那麼套接字不起作用。

回答

0

你試圖混合使用快車線路,其中socket.io資源位置 - 判斷由socket.io代碼你得到的錯誤 - 是行不通的。

會發生什麼事是,開始/pollapp/PollServer.js任何請求都將被socket.io辦理,獲得通過表達出來。

所以你需要保持這兩條路徑分開。爲什麼你不只是使用默認/socket.io資源價值

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

雖然我想:也許這工作得更好(未經測試):

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

而在你的客戶端。