I can't find any information about setting up a wss connection in PHP. I have no problem to be connected throw ws. I'm using this pretty great library to do this by the way: https://github.com/albeva/php-websocket
But my website use https and I need a WebSocket Secure connection to avoid Firefox to complain about the fact that the connection is insecure.
Thanks in advance for your help.
Edit
Here is the code used by the library to start the socket connection:
$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!is_resource($master)) {
$this->throwSocketError();
}
// set options
if (!socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1)) {
$this->throwSocketError();
}
// bind
if (!socket_bind($master, $this->host, $this->port)) {
$this->throwSocketError();
}
// listen for connections
if (!socket_listen($master, SOMAXCONN)) {
$this->throwSocketError();
}
I believe I need to change this code but I can't find how.
Did you try stream_socket_server ?
<?php
$socket = stream_socket_server("ssl://0.0.0.0:".$port, $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
while ($conn = stream_socket_accept($socket)) {
fwrite($conn, 'some data...\n');
fclose($conn);
}
fclose($socket);
}
?>
Here is an example (and link), which was modified slightly, and found from another SO post. Link to other post
And here is a link to the stream_context_create php function definition. function definition
try
{
$localCertificateFilespec = $connection['localCertificateFilespec'];
$localCertificatePassphrase = $connection['localCertificatePassphrase'];
$sslOptions = array(
'ssl' => array(
'local_cert' => $localCertificateFilespec,
'passphrase' => $localCertificatePassphrase,
'allow_self_signed' => true,
'verify_peer' => false
)
);
$sslContext = stream_context_create($sslOptions);
$clientArguments = array(
'stream_context' => $sslContext,
'local_cert' => $localCertificateFilespec,
'passphrase' => $localCertificatePassphrase,
'trace' => true,
'exceptions' => true,
'encoding' => 'UTF-8',
'soap_version' => SOAP_1_1
);
$oClient = new WSSoapClient($connection['wsdlFilespec'], $clientArguments);
$oClient->__setUsernameToken($connection['username'], $connection['password']);
return $oClient->__soapCall($operation, $request);
}
However, at the very bottom of the linked SO post, you will find an answer from "Sam". I am needing to do this same thing in the next few weeks, so I plan on using Sams method... as I am more of a fan of CURL within PHP.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With