【问题标题】:Secure WebSocket and PHP安全的 WebSocket 和 PHP
【发布时间】:2014-05-15 16:05:06
【问题描述】:

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

我正在尝试制作一个(安全的)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   ♣ ♣☺

而且我不能握手……

是不是我做错了什么?

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

【问题讨论】:

  • 是的,您会获得 ssl 加密数据。这很正常。这里需要先解密ssl才能读取数据。
  • 您可能会为此考虑另一种服务器语言,我相信 nodejs 在网络套接字中变得流行。 PHP 进程仍然可以通过...调用进程

标签: php ssl websocket


【解决方案1】:

尝试改用stream socketssetting the stream context options。此外,您可能想使用 tls:// 而不是 ssl://

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2014-07-06
    • 2018-02-05
    • 2015-03-04
    • 2015-10-12
    • 2018-11-08
    • 2015-05-25
    • 2014-10-31
    相关资源
    最近更新 更多