Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Azure网站使用套接字协议启动我的Hapi Node.js站点_Javascript_Node.js_Sockets_Azure Web App Service_Hapijs - Fatal编程技术网

Javascript Azure网站使用套接字协议启动我的Hapi Node.js站点

Javascript Azure网站使用套接字协议启动我的Hapi Node.js站点,javascript,node.js,sockets,azure-web-app-service,hapijs,Javascript,Node.js,Sockets,Azure Web App Service,Hapijs,每当我将Hapi.js web应用程序部署到azure时,它都会使用套接字协议启动服务器(请参见下面的输出) 然而,每当我在本地运行它时,它就会开始使用http。。。我没有使用express或loopback遇到这个问题,只有Hapi。是否有我缺少的某种配置?这是server.connection函数: var server = new Hapi.Server(); var host = process.env.host || '0.0.0.0'; var port = process.env.

每当我将Hapi.js web应用程序部署到azure时,它都会使用套接字协议启动服务器(请参见下面的输出)

然而,每当我在本地运行它时,它就会开始使用http。。。我没有使用express或loopback遇到这个问题,只有Hapi。是否有我缺少的某种配置?这是server.connection函数:

var server = new Hapi.Server();
var host = process.env.host || '0.0.0.0';
var port = process.env.port || 3000;

server.connection({host: host, port: port});

这是一个大问题,因为我无法将
socket://**
作为OAuth的回调URI传递给google。

您不需要将
socket://
传递给google,您将通过正常的
https://yourDomain.com
甚至
https://yourSiteName.azurewebsites.net
到Google进行OAuth回调,它应该可以像您预期的那样工作

节点应用程序侦听管道而不是普通tcp套接字的事实只是iisnode的一个实现细节。基本上,问题是node有自己的Web服务器,因此您不能将其与其他Web服务器(如IIS、Apache、nginx等)一起使用。iisnode弥补了IIS和node之间的差距,它允许IIS侦听机器上的HTTP端口
80
,当IIS在该端口上收到请求时,它只是将其转发给正在侦听命名管道的节点进程。这允许您在IIS中管理您的站点,就像您通常在Windows Server计算机上一样,同时在节点中实际编写应用程序


您可以将其视为两个在机箱上运行的Web服务器,其中一个(IIS)充当另一个(节点)的代理,所有工作都在该节点上进行。iisnode开发人员选择使用命名管道而不是普通的tcp套接字这一事实很奇怪(虽然可以理解,因为您不能像管道一样轻松地保留端口本身),但事实就是这样。

您使用的是哪种Azure服务?网络应用?还有什么?是的,使用与Kudu部署脚本一起部署的Azure Web应用程序,一个iisnode.yml和一个生成的Web.config,结果发现我忽略了bell.js/hapi auth中的“location”属性,它传递的是我在hapi上设置的服务器uri。。。由于Azure/IIS在命名管道中运行,因此它在命名管道中获得
套接字:\\\.\pipe\*
协议。
var server = new Hapi.Server();
var host = process.env.host || '0.0.0.0';
var port = process.env.port || 3000;

server.connection({host: host, port: port});