Skip to content

reactphp-legacy/socket-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SocketClient Component

Build Status

Async Connector to open TCP/IP and SSL/TLS based connections.

Introduction

Think of this library as an async version of fsockopen() or stream_socket_client().

Before you can actually transmit and receive data to/from a remote server, you have to establish a connection to the remote end. Establishing this connection through the internet/network takes some time as it requires several steps in order to complete:

  1. Resolve remote target hostname via DNS (+cache)
  2. Complete TCP handshake (2 roundtrips) with remote target IP:port
  3. Optionally enable SSL/TLS on the new resulting connection

Usage

In order to use this project, you'll need the following react boilerplate code to initialize the main loop and select your DNS server if you have not already set it up anyway.

$loop = React\EventLoop\Factory::create();

$dnsResolverFactory = new React\Dns\Resolver\Factory();
$dns = $dnsResolverFactory->createCached('8.8.8.8', $loop);

Async TCP/IP connections

The React\SocketClient\Connector provides a single promise-based create($host, $ip) method which resolves as soon as the connection succeeds or fails.

$connector = new React\SocketClient\Connector($loop, $dns);

$connector->create('www.google.com', 80)->then(function (React\Stream\Stream $stream) {
    $stream->write('...');
    $stream->close();
});

Async SSL/TLS connections

The SecureConnector class decorates a given Connector instance by enabling SSL/TLS encryption as soon as the raw TCP/IP connection succeeds. It provides the same promise- based create($host, $ip) method which resolves with a Stream instance that can be used just like any non-encrypted stream.

$secureConnector = new React\SocketClient\SecureConnector($connector, $loop);

$secureConnector->create('www.google.com', 443)->then(function (React\Stream\Stream $stream) {
    $stream->write("GET / HTTP/1.0\r\nHost: www.google.com\r\n\r\n");
    ...
});

About

[Legacy] Async, streaming plaintext TCP/IP and secure TLS based connections for ReactPHP.

Resources

License

Stars

Watchers

Forks

Contributors 10

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy