使用IIS在Azure中配置WebSocketBundle

时间:2015-10-20 21:44:51

标签: php azure iis websocket

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

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

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

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

有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

由于Web Apps仅支持HTTP端口80和HTTPS流量端口443。将忽略不同的端口配置,并将流量路由到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 VM或云服务上部署套接字服务器应用程序作为解决方法。