Comments (7)
Since 2017, the way to do it changed, and I think it should now be:
require __DIR__ . '/vendor/autoload.php';
$loop = \React\EventLoop\Factory::create();
$connector = new \React\Socket\Connector($loop, [
'timeout' => 20,
'tls' => [ // here we define the SSL Context options (https://www.php.net/manual/en/context.ssl.php)
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
]);
$wsClient = new \Ratchet\Client\Connector($loop, $connector);
$wsClient('wss://IP:PORT')->then(function($conn) {
$conn->on('message', function($msg) use ($conn) {
echo "Received: {$msg}\n";
$conn->close();
});
$conn->send('Hello World!');
}, function ($e) {
echo "Could not connect: {$e->getMessage()}\n";
});
$loop->run();
from pawl.
Take a look at previous issues about ssl. It looks like you're using a self signed certificate? In that case you need to pass SSL context options to the Connector.
from pawl.
It's working now, thank you.
$loop = \React\EventLoop\Factory::create();
$wsClient = new \Ratchet\Client\Connector($loop, null, ['verify_peer_name' => false, 'allow_self_signed' => true]);
$wsClient('wss://' . WEBSOCKET_SERVER_IP . ':' . WEBSOCKET_SERVER_PORT)->then(
function ($conn) use ($message) {
$conn->send($message);
$conn->close();
}
);
$loop->run();
Follow up question: this only appears to work by using the IP address in the URL. Is there a way to use the host name instead?
from pawl.
I didn't see the follow up question - reopening...
from pawl.
@JimmyPruitt - On your follow-up question - do you know if the name is able to be resolved? By default the resolver in Pawl uses 8.8.8.8
.
from pawl.
Unable to complete SSL/TLS handshake: stream_socket_enable_crypto(): Peer certificate CN='*.foo.bar' did not match expected CN='local.blah.foo.bar'.
This error looks correct to me, as wildcard SSL certificates should only work one level below the root domain, perhaps https://stackoverflow.com/questions/2115611/wildcard-ssl-on-sub-subdomain could help here?
Other than that, you may also pass the peer_name
context option to set the expected peer name for your remote host. This parameter should have preference over the implicit domain name from the connection URI.
from pawl.
Closing this issue - please feel free to comment if your issue is not fixed.
from pawl.
Related Issues (20)
- Connection closed (4005 - Already authenticated.) HOT 1
- underlying connection closed 1006 HOT 1
- Allow guzzlehttp/psr7 v2 HOT 1
- Call to undefined function GuzzleHttp\Psr7\uri_for() HOT 3
- Call to undefined function GuzzleHttp\Psr7\uri_for() HOT 6
- How to send command line live output to websocket server?
- send variable HOT 2
- Implementation to listen for socket.io events
- Sending binary messages refuse to work with specific char suite. HOT 2
- Cannot get TLS to work on proxied websocket with nginx
- Question - RabbitMq consumer freezing the websocket HOT 4
- How to authenticate with PEM certificate? HOT 2
- send message from php to websocket HOT 1
- reconnect to server when internet connection has been intrupted
- Message lost on 2 separate connections to same URL HOT 1
- PHP Warning: stream_select(): You MUST recompile PHP with a larger value of FD_SETSIZE.
- Unhandled promise rejection with DomainException: HTTP/1.1 200 OK
- Uncaught UnderflowException: Frame
- conflict with laravel-websockets HOT 1
- Immediately send and submit to the server.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pawl.