【问题标题】:Configuring WebSocketBundle in Azure with IIS使用 IIS 在 Azure 中配置 WebSocketBundle
【发布时间】:2015-10-20 21:44:50
【问题描述】:

我正在尝试使用 Windows Server 2012/IIS 而不是内置服务器在 Symfony2 中配置 GoS\WebSocketBundle 和 php 5.6,当我在 Ubuntu 中使用内置服务器时没有问题。

每当我尝试访问 IIS 时出现 403 错误,我已经尝试使用 SimpleWebSocket Chrome 插件但没有成功。

我正在使用 websocket 的基本 url,ws://my.example.com,我已经尝试过 wss => wss://my.example.com

服务器托管在 Azure 中,启用了 Websockets。

有什么想法吗?

谢谢,

【问题讨论】:

  • 您是否在 Azure VM 上托管您的应用程序?
  • 我没有虚拟机,我使用的是预配置的“Web 应用程序 + MySql”包,它为我提供了一个支持 PHP 的 IIS,Azure 告诉我 IIS 托管在 Windows Server 2012 中,但我无法访问它。

标签: php azure iis websocket


【解决方案1】:

由于 Web 应用程序仅支持用于 HTTP 的端口 80 和用于 HTTPS 流量的端口 443。不同的端口配置将被忽略,流量将被路由到 80 或 443。

我们需要为 WebSocketBundle 服务器配置一个超过 80 的额外端口。在本地环境中,如果我将端口设置为 80,我必须以管理员权限运行它的命令来启动 websocket 服务器。

我深入研究了 GOS/WebsocketBundle SDK,发现它使用stream_socket_server() 来启动 websocket 服务器。 所以我在 Azure 上创建了一个简单的测试,代码如下 sn-p: <?php $socket = stream_socket_server("tcp://0.0.0.0:80", $errno, $errstr); if (!$socket) { echo "$errstr ($errno)<br />\n"; } else { while ($conn = stream_socket_accept($socket)) { fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n"); fclose($conn); } fclose($socket); } ?> 结果是我们没有权限成功运行脚本。 作为一种解决方法,我们可以在 Azure VM 或云服务上部署套接字服务器应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多