问题描述
我有一个 nodejs
websocket 客户端和一个 PHP
websocket 服务器。我需要在建立连接后获取客户端发送的数据......我不知道如何实现这一点。我对该主题进行了一些研究,但找不到任何有用的东西。
// client.js
import WebSocket from 'ws';
let ws = new WebSocket("ws://localhost:8080");
ws.on("open",() => {
ws.send("Hello World"); // sending data after connection is opened
});
// server.PHP
function newServer(string $address,int $port) {
// Create WebSocket.
$server = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_set_option($server,SOL_SOCKET,SO_REUSEADDR,1);
socket_bind($server,$address,$port);
socket_listen($server);
$client = socket_accept($server);
// Send WebSocket handshake headers.
$request = socket_read($client,5000);
preg_match('#Sec-WebSocket-Key: (.*)\r\n#',$request,$matches);
$key = base64_encode(pack(
'H*',sha1($matches[1] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')
));
$headers = "HTTP/1.1 101 Switching Protocols\r\n";
$headers .= "Upgrade: websocket\r\n";
$headers .= "Connection: Upgrade\r\n";
$headers .= "Sec-WebSocket-Version: 13\r\n";
$headers .= "Sec-WebSocket-Accept: $key\r\n\r\n";
socket_write($client,$headers,strlen($headers));
// after handshake get data?
}
newServer("0.0.0.0",8080);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)