2016-07-26 6 views
0

Я создаю приложение Node.js Socket.io с Visual Studio. Он отлично работает на местном уровне. Когда я опубликовал его как приложение Azure, получившее ошибку:Host Node.js Socket.io as Azure app

«Страница не может быть отображена из-за ошибки внутреннего сервера».

Кто-нибудь знает, в чем проблема, я думаю о порте 80, который является только открытым портом для приложения Azure (+ 443).

Я попытался прослушать порт 80, но опять та же ошибка.

+0

Когда я разместил сокет.io на Azure Мне пришлось использовать приложение Azure, специально предназначенное для приложений Node.JS. – pay

+0

Создал ли он его с панели управления Azure, вместо Visual Studio создайте его по умолчанию при публикации? –

+0

Да Я создал приложение Node.js с панели управления Azure, а затем, если я правильно помню, использовал конкретный URL-адрес развертывания GIT, который я ввел в VS – pay

ответ

2

Чтобы построить Socket.io приложения на Azure Web Apps, есть несколько ухаживания следует обратить на:

  • Node.js сервер прослушивание port should be set similar to process.env.PORT || 3000`

  • Проверьте настройки web.config, подтвердите <webSocket enabled="false"/>, чтобы отключить модуль IIS WebSockets, который включает в себя собственную реализацию WebSockets и конфликты с узлами WebSocket с узлами Node.js, такими как Socket.IO.

Для получения более подробной информации, пожалуйста, обратитесь к https://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-chat-app-socketio/.

Любая дополнительная забота, пожалуйста, сообщите мне.

1

Azure App Service использует IISNode, чтобы поговорить с node.exe процессов. Это происходит по именованным каналам. Настройте приложение для использования именованного канала вместо сокета.

т.е.

Заменить

app.set('port', 3000); 

по

app.set('port', process.env.PORT || 3000); 

Включить WebSockets в Портале, перезапустите Web App, и вы должны быть в рабочем состоянии.

[Gary Liu прав, эта настройка не требуется. Однако, используя пример реализации Socket.IO-чата в App Service, Socket.IO, похоже, не заботится о том, как я устанавливаю «WebSockets» на портале. Работает в любом случае. ]

С Внутренняя ошибка сервера является вычисление эквивалентно Существует ошибка в наблюдаемой Вселенной вы должны также включить ведение журнала для приложения Node, по крайней мере, на стадии разработки:
От https://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-debug/:

To enable developer errors, add the following line to the IISNode.yml file:

devErrorsEnabled: true

Once this option is enabled, IISNode will return the last 64K of information sent to stderr instead of a friendly error such as "an internal server error occurred".

Подробнее о iisnode: http://www.jokecamp.com/blog/getting-started-with-iisnode/
Больше на именованные каналы: What are named pipes?

+0

Спасибо! Теперь мое приложение Azure работает. –

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