2014-01-22 2 views
0

Когда я пытаюсь сделать вызов метода облучают через сервер nodejs я получил ошибку 500 это говорит версия протокола не поддерживаетсяNode расслоение плотной ошибка сервера экспресс 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 и не получить переданы Экспресс.

Таким образом, вам необходимо разделить эти два пути. Возможно, это лучше работает (непроверенные):

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

И в клиенте:

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

Хотя мне интересно, почему вы не просто использовать значения ресурса по умолчанию /socket.io.

Смежные вопросы