如何连接此网络套接字服务器

时间:2019-01-29 23:37:57

标签: websocket client

GET ws://echo.websocket.org/ HTTP/1.1
Origin: http://websocket.org
Cookie: __utma=99as
Connection: Upgrade
Host: echo.websocket.org
Sec-WebSocket-Key : uRovscZjNol/umbTt5uKmw==
Upgrade: websocket
Sec-WebSocket-Version: 13

https://www.websocket.org/echo.html

我尝试使用以上页面进行连接,但没有任何响应。

如果您有其他选择,请告诉我。

我当然连接到同一网络。

1 个答案:

答案 0 :(得分:0)

要使用不带库的php连接到wss://echo.websocket.org

<?php  
$sock = stream_socket_client("ssl://echo.websocket.org:443",$e,$n,30,STREAM_CLIENT_CONNECT,stream_context_create(null));
if(!$sock){
 echo"[$n]$e".PHP_EOL;
} else {
  fwrite($sock,"GET / HTTP/1.1\r\nHost: echo.websocket.org\r\nAccept: */*\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ".rand(0,999)."\r\n\r\n");
  while(!feof($sock)){
    var_dump(fgets($sock,2048));
  }
}

这处理了 wss 加密通量的密钥握手。

响应应如下所示:

HTTP/1.1 101 Web Socket Protocol Handshake
Connection: Upgrade
Date: Fri, 15 Nov 2019 05:15:36 GMT
Sec-WebSocket-Accept: wl5g9FOLmrZUguiPZeig/2uiI9o=
Server: Kaazing Gateway
Upgrade: websocket

与命令行代码相同:

php -r '$sock=stream_socket_client("ssl://echo.websocket.org:443",$e,$n,30,STREAM_CLIENT_CONNECT,stream_context_create(null));if(!$sock){echo"[$n]$e".PHP_EOL;}else{fwrite($sock,"GET / HTTP/1.1\r\nHost: echo.websocket.org\r\nAccept: */*\r\nConnection: Upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: ".rand(0,999)."\r\n\r\n");while(!feof($sock)){var_dump(fgets($sock,2048));}}'