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

Dnode Laravel Package

cravler/dnode

PHP implementation of the DNode RPC protocol to let PHP and Node.js call each other’s functions over TCP sockets. Includes Composer install and cross-language examples (PHP↔PHP, Node↔Node, PHP↔Node). Current limitation: no encryption/SSL.

View on GitHub
Deep Wiki
Context7

DNode RPC protocol for PHP 5.3

Frequently asked questions about Dnode
Can I use cravler/dnode in a modern Laravel (PHP 8+) application?
No, this package is explicitly for PHP 5.3 and won’t work natively in Laravel 5.5+. You’d need a compatibility layer like a Dockerized PHP 5.3 container or a custom wrapper, but this introduces significant maintenance overhead. Modern Laravel projects should avoid it unless constrained by legacy systems.
How do I secure DNode RPC calls in production since it only supports unencrypted TCP?
The package lacks built-in encryption, so you’d need to implement TLS manually or terminate traffic at a reverse proxy (e.g., Nginx with SSL). This requires custom configuration and isn’t recommended for production without additional security layers. Alternatives like gRPC or REST with HTTPS are safer choices.
Will cravler/dnode replace Laravel’s queues or HTTP clients for Node.js communication?
No, it’s not a drop-in replacement. Laravel’s queues (Redis/Database) or HTTP clients (Guzzle) are more mature for task distribution or stateless calls. DNode is niche—use it only if you need bidirectional RPC between PHP and Node.js, not for general-purpose inter-service communication.
Are there Laravel-specific integrations or service providers for this package?
No, the package has no Laravel integrations. You’d need to manually create a service provider to bootstrap DNode clients/servers, handle event loops alongside Laravel’s Swoole/RoadRunner workers, and manage lifecycle hooks. This is non-trivial and unsupported.
What’s the best way to test cravler/dnode in a Laravel project?
Start with the package’s examples in a PHP 5.3 environment (e.g., Docker container) to validate basic RPC between PHP and Node.js. For Laravel, mock DNode dependencies in unit tests using interfaces, but avoid integration tests until you’ve resolved PHP version and security gaps. No PHP 8.x tests exist.
Is cravler/dnode still maintained? Should I use it for a new project?
The package is abandoned (last commit: 2013) with no active community. It’s only viable for legacy PHP 5.3 systems. For new Laravel projects, consider modern alternatives like gRPC, REST, or Laravel Echo + Pusher, which are actively maintained and secure.
How does DNode’s event loop interact with Laravel’s Swoole or RoadRunner workers?
DNode’s event loop is independent and could conflict with Laravel’s async workers (Swoole/RoadRunner). You’d need to isolate DNode processes or implement careful synchronization, which adds complexity. This isn’t a supported use case, so test thoroughly in a staging environment.
What are the performance implications of using DNode in Laravel?
DNode may introduce latency compared to Laravel’s native tools (e.g., queues, broadcast drivers). It’s optimized for low-overhead RPC but lacks the performance benchmarks of modern protocols like gRPC. Profile in your specific environment, especially if using it for high-frequency calls.
Are there alternatives to cravler/dnode for PHP ↔ Node.js communication?
Yes. For RPC, use gRPC with PHP/Node.js stubs. For real-time events, Laravel Echo + Pusher works well. For stateless calls, REST or GraphQL are simpler. DNode is only useful if you’re locked into PHP 5.3 and need bidirectional RPC with minimal setup.
How do I migrate away from cravler/dnode if it becomes unsustainable?
Plan a phased migration: Replace DNode calls with REST/gRPC endpoints, then update Node.js/PHP clients to use the new protocol. For queues, switch to Laravel’s native queue system. Document all DNode dependencies first, as this package lacks Laravel-specific tooling or migration guides.
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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky