Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Socket Laravel Package

amphp/socket

Async, non-blocking socket library for AMPHP. Provides client/server abstractions over TCP, UDP, and Unix domain sockets with DNS resolution, retries, connect timeouts, cancellation, and optional TLS encryption. Implements ReadableStream/WritableStream.

View on GitHub
Deep Wiki
Context7

Non-blocking socket and TLS functionality for PHP based on Amp.

Frequently asked questions about Socket
Can I use amphp/socket in a Laravel application without blocking the request lifecycle?
No, amphp/socket is fiber-based and requires Amp or Swoole. Offload socket operations to Laravel async workers (e.g., spatie/laravel-async) or Swoole coroutines to avoid blocking synchronous HTTP requests. Never mix fibers directly in Laravel’s core.
How do I connect to a TCP server with TLS in Laravel using amphp/socket?
Use `connectTls()` with a `ClientTlsContext` configured with your certificate and CA bundle. Example: `$socket = connectTls('example.com:443', new ClientTlsContext(['certificate_authority' => 'path/to/ca.crt']));`. Wrap this in an async worker if used in Laravel.
Does amphp/socket support UDP sockets for Laravel microservices?
Yes, use `bindUdpSocket()` to create a UDP server or `connectUdp()` for clients. UDP is unreliable, so design retries/timeouts (e.g., for IoT or gaming). Example: `$socket = bindUdpSocket('udp://0.0.0.0:1234');`
What Laravel versions and PHP versions are compatible with amphp/socket?
Requires PHP 8.1+ (for fibers) and Laravel 10+. For older Laravel, upgrade PHP or use Swoole (via amphp/swoole) as an alternative. Test thoroughly in staging—fiber deadlocks can crash synchronous Laravel apps.
How do I handle connection errors and timeouts in amphp/socket for Laravel?
Wrap socket operations in `try-catch` blocks to catch `ConnectException` or `SocketException`. Use `ConnectContext` to set timeouts (e.g., `withConnectTimeout(5)`). Log errors via Laravel’s `Log` facade for debugging.
Can I replace Guzzle HTTP client with amphp/socket for raw TCP connections in Laravel?
Yes, but only for custom protocols. Use `connect()` for HTTP/1.1 or `connectTls()` for HTTPS. However, Guzzle handles HTTP/2, redirects, and cookies—amphp/socket is lower-level. Use it for raw TCP/UDP or WebTransport.
How do I integrate amphp/socket with Laravel’s service container?
Register socket clients/servers as singletons in a Laravel service provider. Example: `app()->singleton('socket.client', fn() => connect('example.com:80'));`. Avoid global state; prefer dependency injection in async workers.
What are the alternatives to amphp/socket for non-blocking sockets in Laravel?
For Laravel, consider Swoole (via `amphp/swoole`) for native PHP coroutines, or `react/php-socket` for ReactPHP compatibility. For WebSockets, `beberlei/ratchet` or `amphp/websocket` (if using Amp). Choose based on your concurrency model (fibers vs. events).
How do I test amphp/socket in Laravel’s testing environment?
Use Laravel’s async testing helpers (e.g., `Async::handle()`) or mock sockets with `Mockery`. Test TLS connections with self-signed certs in CI. Avoid real network calls in unit tests; use in-memory Unix sockets or local TCP servers.
Is amphp/socket production-ready for high-concurrency Laravel apps (e.g., 10K WebSocket connections)?
Yes, but only with Amp/Swoole in async workers. Laravel’s synchronous core cannot handle fibers directly. Monitor connection metrics (latency, errors) via Prometheus or Laravel’s logging. Benchmark under load—UDP may need custom retry logic.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope