2015-10-20 83 views
-2

我尝试在使用Windows Server 2012/IIS代替buit-in服务器的php 5.6中在Symfony2中配置GoS \ WebSocketBundle,当我在Ubuntu中使用内置服务器时,我没有任何问题。在Azure中使用IIS配置WebSocketBundle

每当我尝试访问IIS给我一个403错误,我已经试图使用SimpleWebSocket Chrome插件没有成功。

我使用的基本URL的WebSocket,WS://my.example.com,我已经尝试了WSS => WSS://my.example.com

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

有什么想法?

感谢,

+0

您是否将您的应用程序托管在Azure VM上? –

+0

我没有vm,我使用预先配置的“Web Application + MySql”包,它为我提供了一个支持PHP的IIS,Azure告诉我们这个IIS托管在Windows Server 2012中,但我无法访问它。 – Eric

回答

0

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

我们需要为WebSocketBundle服务器配置超过80的附加端口。并且在本地环境中,如果我将端口设置为80,则必须以管理员权限运行其命令以启动websocket服务器。

我跳入GOS/WebsocketBundle SDK中,发现它使用stream_socket_server()来启动websocket服务器。 因此,我使用以下代码片段在Azure上创建了一个简单测试: <?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虚拟机或云服务上部署套接字服务器应用程序作为解决方法。