I have a simple node.js websocket server:
var fs = require('fs')
var ws = require('../../')
var options = {
secure: false,
}
var Server = ws.createServer(options, function(conn){
conn.on("text", function (str) {
broadcast(str);
console.log('connected');
console.log(str);
})
}).listen(8001, "127.0.0.1");
function broadcast(str){
Server.connections.forEach(function (connection) {
connection.sendText(str)
})
}
This works with the JS client, but it does not work with the PHP client, for example:
function MaskMessage($text)
{
$b1 = 0x80 | (0x1 & 0x0f);
$length = strlen($text);
if($length <= 125)
$header = pack('CC', $b1, $length);
elseif($length > 125 && $length < 65536)
$header = pack('CCn', $b1, 126, $length);
elseif($length >= 65536)
$header = pack('CCNN', $b1, 127, $length);
return $header.$text;
}
$host = 'localhost';
$port = 8001;
$msg = 'hey hi hello';
$msg = MaskMessage('hej hej siema');
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, $host, $port);
if(!$result)
echo 'cannot connect '.socket_strerror(socket_last_error());
else{
echo socket_write($socket, strval($msg), strlen($msg));
}
socket_strerror(socket_last_error());
socket_close($socket);
PHP creates a socket and connects, it does not return any errors and a message is sent, but the node.js server does not receive anything from this client. What am I doing wrong? This client works with the websocket PHP server.
source
share