Azure 网站使用套接字协议启动我的 Hapi Node.js 站点
Azure Web Site starting my Hapi Node.js site with socket protocol
每当我将 Hapi.js Web 应用程序部署到 Azure 时,它都会使用套接字协议启动服务器(请参阅下面的输出)。
socket:\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb
GET /
GET /{param*}
GET /api/employees
POST /api/employees
GET /api/employees/{id}
PUT /api/employees/{id}
DELETE /api/employees/{id}
POST /api/worklog
GET /login
POST /login
Hapi server started @ socket:\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb
150914/214730.270, [response], socket:\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb: [1;32mget[0m / {} [32m200[0m (316ms)
但是,每当我在本地 运行ning 时,它就会开始使用 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://*<mydoamin>*
传递给 google 作为 OAuth 的回调 URI。
您不需要将 socket://<domain>
传递给 google,您可以将正常的 https://yourDomain.com
甚至 https://yourSiteName.azurewebsites.net
传递给 Google OAuth 回调,它应该会像您预期的那样工作。
节点应用程序正在监听管道而不是普通的 tcp 套接字这一事实只是 iisnode 的一个实现细节。基本上,问题是节点有它自己的网络服务器,所以你不能将它与其他网络服务器(如 IIS、Apache、nginx 等)一起使用。 iisnode 弥合了 IIS 和节点之间的差距,因为它允许 IIS 监听服务器上的 HTTP 端口machine 80
并且当 IIS 在该端口上收到请求时,它只是将其转发到正在侦听命名管道的节点进程。这使您可以像通常在 Windows 服务器机器上那样在 IIS 中管理您的站点,而实际上是在节点中编写您的应用程序。
您可以将其视为盒子上的 2 个网络服务器 运行,一个 (IIS) 充当另一个(节点)的代理,所有工作都在其中实际进行。 iisnode 开发人员选择使用命名管道而不是普通的 tcp 套接字这一事实很奇怪(尽管可以理解,因为您不能像管道一样轻松地保留端口本身),但事实就是如此。
每当我将 Hapi.js Web 应用程序部署到 Azure 时,它都会使用套接字协议启动服务器(请参阅下面的输出)。
socket:\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb
GET /
GET /{param*}
GET /api/employees
POST /api/employees
GET /api/employees/{id}
PUT /api/employees/{id}
DELETE /api/employees/{id}
POST /api/worklog
GET /login
POST /login
Hapi server started @ socket:\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb
150914/214730.270, [response], socket:\.\pipe\b5c0af85-9393-4dcb-bd9a-3ba9b41ed6fb: [1;32mget[0m / {} [32m200[0m (316ms)
但是,每当我在本地 运行ning 时,它就会开始使用 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://*<mydoamin>*
传递给 google 作为 OAuth 的回调 URI。
您不需要将 socket://<domain>
传递给 google,您可以将正常的 https://yourDomain.com
甚至 https://yourSiteName.azurewebsites.net
传递给 Google OAuth 回调,它应该会像您预期的那样工作。
节点应用程序正在监听管道而不是普通的 tcp 套接字这一事实只是 iisnode 的一个实现细节。基本上,问题是节点有它自己的网络服务器,所以你不能将它与其他网络服务器(如 IIS、Apache、nginx 等)一起使用。 iisnode 弥合了 IIS 和节点之间的差距,因为它允许 IIS 监听服务器上的 HTTP 端口machine 80
并且当 IIS 在该端口上收到请求时,它只是将其转发到正在侦听命名管道的节点进程。这使您可以像通常在 Windows 服务器机器上那样在 IIS 中管理您的站点,而实际上是在节点中编写您的应用程序。
您可以将其视为盒子上的 2 个网络服务器 运行,一个 (IIS) 充当另一个(节点)的代理,所有工作都在其中实际进行。 iisnode 开发人员选择使用命名管道而不是普通的 tcp 套接字这一事实很奇怪(尽管可以理解,因为您不能像管道一样轻松地保留端口本身),但事实就是如此。