Я импортировал проект чат-комнаты git socket.io! Код нормально работает с http = require ('http'), но при обмене на https = require ('https') мой сервер отвечает с ошибкой 500 http
var express = require('express')
, app = express()
// , http = require('http')
, https = require('https')
, fs = require('fs')
, privateKey = fs.readFileSync('HTTPS_Permissions/key.key', 'utf8')
, certificate = fs.readFileSync('HTTPS_Permissions/cert.cert', 'utf8')
, credentials = {key: privateKey, cert: certificate}
, httpsServer = https.createServer(credentials, app)
// , httpServer = http.createServer(app)
, io = require('socket.io').listen(httpsServer)
//, port = process.env.PORT || 8080
, port = process.env.PORT
httpsServer.listen(port, function () {
console.info('Server listening on port %d', port);
});
//httpServer.listen(port);
// routing
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
@JayGong импортировал в лазурный портал этот git -> github.com/fern4lvarez/socketiochatrooms
Работает ли проект нормально локально? Вы проверили, возникла ли ошибка в самом проекте, а не в лазурном? Какие действия вы пробовали?
@JayGong да локально работает 100%, новичок в лазурном ... Откладываю https, сейчас тестирую http, на сервере выдается ошибка 404. Мой проект находится в «общедоступной» папке, а «узел приложения» - в папке «wwwroot», и я не могу подключиться, это дает мне ошибку 404. Если я назначу каталог виртуального пути «socket.io» e каталог физический путь site \ wwwroot \ socket.io на портале a azure возвращает мне ошибку 403. Как мне запустить сайт в подпапке вместе с node / socket.io в корневой папке?
@JayGong в этом примере моя структура каталогов -> i.imgur.com/w46czXG.png
Хорошо, попробую на своей стороне.
@JayGong в 'public \ index.php' вызовите скрипт <script src = "https://myproject.azurewebsites.net/socket.io/socket.io.js"></script>
@JayGong Я только что повторно импортировал проект git .. Я создал «общедоступную» папку внутри «корня» и перекинул index.html из примера git в «общедоступную» папку. На лазурном портале я настроил виртуальный каталог «/» для физического каталога «site \ wwwroot \ public», и когда я обращаюсь к сайту, я получаю сообщение об ошибке «У вас нет разрешения на просмотр этого каталога или страницы».
Я не понимаю, почему пример git работает на 100% в «корневой» папке и, помещая index.html внутри «общедоступной» папки, я получаю ошибку = /





Я подписался на проект, которым вы поделились в комментарии, он работает на моей стороне.
web.config
<?xml version = "1.0" encoding = "utf-8"?>
<!--
This configuration file is required if iisnode is used to run node processes behind
IIS or IIS Express. For more information, visit:
https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config
-->
<configuration>
<system.webServer>
<!-- Visit http://blogs.msdn.com/b/windowsazure/archive/2013/11/14/introduction-to-websockets-on-windows-azure-web-sites.aspx for more information on WebSocket support -->
<webSocket enabled = "false" />
<handlers>
<!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
<add name = "iisnode" path = "app.js" verb = "*" modules = "iisnode"/>
</handlers>
<rewrite>
<rules>
<!-- Do not interfere with requests for node-inspector debugging -->
<rule name = "NodeInspector" patternSyntax = "ECMAScript" stopProcessing = "true">
<match url = "^app.js/debug[/]?" />
</rule>
<!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
<rule name = "StaticContent">
<action type = "Rewrite" url = "public{REQUEST_URI}"/>
</rule>
<!-- All other URLs are mapped to the node.js site entry point -->
<rule name = "DynamicContent">
<conditions>
<add input = "{REQUEST_FILENAME}" matchType = "IsFile" negate = "True"/>
</conditions>
<action type = "Rewrite" url = "app.js"/>
</rule>
</rules>
</rewrite>
<!-- 'bin' directory has no special meaning in node.js and apps can be placed in it -->
<security>
<requestFiltering>
<hiddenSegments>
<remove segment = "bin"/>
</hiddenSegments>
</requestFiltering>
</security>
<!-- Make sure error responses are left untouched -->
<httpErrors existingResponse = "PassThrough" />
<!--
You can control how Node is hosted within IIS using the following options:
* watchedFiles: semi-colon separated list of files that will be watched for changes to restart the server
* node_env: will be propagated to node as NODE_ENV environment variable
* debuggingEnabled - controls whether the built-in debugger is enabled
See https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config for a full list of options
-->
<iisnode watchedFiles = "web.config;*.js"/>
</system.webServer>
</configuration>
Если вы поместите index.html в общую папку, созданную вами непосредственно в wwwroot/, вам необходимо добавить в свой код приведенный ниже код на основе этого статья.
app.use(express.static('public'))
Я тестировал это.
Обновить ответ:
Я также включаю опцию Web Sockets.
Спасибо за помощь! Но мне пока не удалось запустить приложение. У меня ошибка 403 -> i.imgur.com/X8H6afz.png - на site\wwwroot у меня есть файлы web.conf, app.js. Моя структура корневого каталога и общедоступная -> i.imgur.com/rf6OaC8.png. И напоследок мой app.js -> i.imgur.com/4ADqvZl.png
Я изменил конфигурацию приложения. Но теперь показана эта новая ошибка -> i.imgur.com/2P8Fx5P.png Ошибка 405 метод POST не разрешен. Я безнадежен = /
да! веб-сокеты уже включаются ... проблема сохраняется .. = / .... у меня возникла идея ... поместите весь проект в папку root. Но мне нужно настроить web.config для узла и для php в одной папке. Есть ли способ объединить это в один web.config?
@ FábioZangirolami Извините за задержку, статический файл в примере - это html, вы имеете в виду, что изменяете его как php?
у моего приложения нет пути к файлам php. Поскольку узел не является управляемым .phps .. У меня есть только маршрут к каталогам .... Я смог решить свою проблему, выполнив эту настройку на лазурном портале -> i.imgur.com/KB1YZJL.png
Пример отсюда, правда? github.com/socketio/chat-example