Supporting handshake from drafts: draft-hixie-thewebsocketprotocol-76 draft-ietf-hybi-thewebsocketprotocol-00
Author: Simon Samtleben (web@lemmingzshadow.net)
Example #1
0
function postToWebSocket($property, $value, $post_action = 'PostProperty')
{
    if (defined('DISABLE_WEBSOCKETS') && DISABLE_WEBSOCKETS == 1) {
        return;
    }
    require_once ROOT . 'lib/websockets/client/lib/class.websocket_client.php';
    global $wsClient;
    if (!Is_Object($wsClient)) {
        $wsClient = new WebsocketClient();
        if (!@$wsClient->connect('127.0.0.1', WEBSOCKETS_PORT, '/majordomo')) {
            $wsClient = false;
        }
    }
    if (!Is_Object($wsClient) && isset($_SERVER['REQUEST_METHOD'])) {
        return false;
    }
    $payload = json_encode(array('action' => $post_action, 'data' => array('NAME' => $property, 'VALUE' => $value)));
    $data_sent = false;
    if (Is_Object($wsClient)) {
        $data_sent = @$wsClient->sendData($payload);
    }
    if (!$data_sent && !isset($_SERVER['REQUEST_METHOD'])) {
        //reconnect
        $wsClient = new WebsocketClient();
        if (@$wsClient->connect('127.0.0.1', WEBSOCKETS_PORT, '/majordomo')) {
            $wsClient->sendData($payload);
        }
    }
}
Example #2
0
/**
 * Fonction permettant la planification horaire 
 * $Mac est un string, l'adresse mac de la multiprise du client 
 * $N_prise est un int, le numéro de la prise qui se modifie
 * $Nb_Ephe est un int, le nombre d'éphémeride
 * $Plannif est un string, il s'agit du jouer et l'heure planifié pour un changement d'etat 
 * Return $resultat string, renvoi confirmation ou echec
 */
function Ephemeride($Mac, $N_prise, $Nb_Ephe, $Plannif)
{
    //Adresse IP du serveur WS
    $Ip = '172.17.50.152';
    //appel de la BDD
    Base_de_donnees();
    try {
        $ephe = 'Nb_Ephe_Prise' . $N_prise;
        $prise = 'Prise' . $N_prise . '_E' . $Nb_Ephe;
        // Requete sql qui selectionne la ligne en fonction de l'adresse mac
        $requete = mysql_query("SELECT * FROM multiprise WHERE Mac='{$Mac}'");
        // Vérification du contenu de la requete
        if (mysql_num_rows($requete) == 0) {
            return "Impossible d'effectuer cette action";
        } else {
            //requete permettant la mise a jour de la table programmation contenant les données de la planification
            $reponse = mysql_query("UPDATE programmation SET {$ephe}='{$Nb_Ephe}', {$prise}='{$Plannif}' WHERE Mac='{$Mac}' ");
            //Le prise ayant subit une planification horaire prend la valeur 1
            switch ($N_prise) {
                case 1:
                    $p = '10000';
                    break;
                case 2:
                    $p = '01000';
                    break;
                case 3:
                    $p = '00100';
                    break;
                case 4:
                    $p = '00010';
                    break;
                case 5:
                    $p = '00001';
                    break;
            }
            // Création d'un client web socket et connexion au serveur
            $client = new WebsocketClient();
            $client->connect($Ip, 9300, '/');
            // Renvoi "#" + l'adresse Mac + la prise qui a subbit le changement
            $client->sendData("#{$Mac}{$p}");
            return "Programmation de la prise effectuée";
        }
    } catch (Exception $a) {
        //En cas d'erreur de connexion
        die('Erreur:' . $a->getMessage());
    }
}
Example #3
0
         */
        return true;
    }
    private function _disconnect()
    {
        fclose($this->_Socket);
    }
    private function _generateRandomString($length = 10, $addSpaces = true, $addNumbers = true)
    {
        $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"§$%&/()=[]{}';
        $useChars = array();
        // select some random chars:
        for ($i = 0; $i < $length; $i++) {
            $useChars[] = $characters[mt_rand(0, strlen($characters) - 1)];
        }
        // add spaces and numbers:
        if ($addSpaces === true) {
            array_push($useChars, ' ', ' ', ' ', ' ', ' ', ' ');
        }
        if ($addNumbers === true) {
            array_push($useChars, rand(0, 9), rand(0, 9), rand(0, 9));
        }
        shuffle($useChars);
        $randomString = trim(implode('', $useChars));
        $randomString = substr($randomString, 0, $length);
        return $randomString;
    }
}
$WebSocketClient = new WebsocketClient('69.163.242.219', 8888, '5624c7d1f10b1');
echo $WebSocketClient->sendData('1337');
unset($WebSocketClient);