我正在尝试使用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。
有什么想法吗?
谢谢,
答案 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或云服务上部署套接字服务器应用程序作为解决方法。