安全的WebSocket和PHP

时间:2014-05-15 16:05:06

标签: php ssl websocket

我有一个带有IIS和PHP的Windows 2012 R2服务器(5.5.12)。

我正在尝试制作(安全)WebSocket服务器。所以,我做到了:

$host = 'ssl://127.0.0.1'; // host
$port = '8080'; // port

//Create TCP/IP sream socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);

socket_bind($socket, 0, $port);

socket_listen($socket);

当我使用ws://连接时,一切正常,我收到了正确的标题:

GET /server.php HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: site.url:8080
Origin: https://site.url
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: MwqZ0uVuheQaS3ks7EJARQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, x-webkit-d
eflate-frame
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/34.0.1847.131 Safari/537.36

但是当我尝试使用wss://连接时...我收到一些奇怪的东西:

▬♥☺ ø☺  ù♥☺¶P↓ÚðÙ±s÷╠Þ´▲è♣ÖaN?uüEg´¯§òñÞ=¿§  *└
└       └‼└¶└↕└└◄ 3 2 E 9 8 ê ▬ / A 5 ä
 ♣ ♦☺  D   ↑ ▬  ‼         site.url  ☺ ☺
 ♠ ↨ ↑ ↓ ♂ ☻☺  #  3t   ♣ ♣☺

我不能做握手......

我做错了什么?

感谢您的帮助,抱歉英语不好。

1 个答案:

答案 0 :(得分:0)

尝试使用stream sockets代替setting the stream context options。此外,您可能希望使用tls://而不是ssl://