我试图配置GoSWebSocketBundle在Symfony2与php 5.6使用Windows Server 2012/IIS代替内置服务器,我没有问题,当我在Ubuntu中使用内置服务器。
每当我尝试访问IIS给我一个403错误,我已经尝试使用SimpleWebSocket Chrome插件没有成功。
我正在使用websocket的基础url, ws://my.example.com,我已经尝试过wss => wss://my.example.com
服务器托管在Azure中,启用了Websockets。
任何想法?
谢谢,
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虚拟机或云服务上作为解决方案。