首页 > 解决方案 > 握手后如何从php websocket服务器中的js websocket客户端获取数据?

问题描述

我有一个nodejswebsocket 客户端和一个phpwebsocket 服务器。建立连接后,我需要获取客户端发送的数据......我不确定如何实现这一点。我对该主题进行了一些研究,但找不到任何有用的东西。

// 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);

标签: phpnode.jswebsockethandshake

解决方案


推荐阅读