Avatar billede nemlig Professor
Oprettet i dag kl. 12:37 Der er 3 kommentarer

Hente data fra DEVICE via websocket

Hejsa.
Jeg håber på lidt hjælp til udtræk af data fra en wifi-dims. Normalt klarer jeg det med CURL(), men i det pågældende setup skal adgangen ske via "websocket".

Godkendelse sker via JSON-data - det samme med hentning af data.

Jeg har fået nogle informationer:
websocket: wss://658608ab.in.larnitech.com:8443/api
Godkendelse: {"request": "authorize", "key": "999999999999"}

Og så jeg eksempler på forskellige forespørgsler, fx
Hent liste af devices: {"request":"getDevices"}   

Dermed skal jeg både have sendt godkendelsen afsted, men også den ønskede forespørgsel.

Jeg har kigget lidt på nettet og kommet frem til nedenstående kode, men mangler at få medtaget min forespørgsel. Og så synes jeg, der er gentagelser i headeren, men sikkert også noget, der ikke passer.
Jeg kan ikke rigtigt komme videre.
$key =     '99999999999';
$host = 'wss://658608ab.in.larnitech.com:8443/api';
$port = -1; //Benyttes hvis portnr. ikke anvendes
$local = 'https://mitdomaene.dk';

$login = [
    'request'     => 'authorize',
    'key'         => $key
];
$login=json_encode($login);

$data = [
    'request'     => 'getDevices'
];
$data=json_encode($data);

$head = "GET / HTTP/1.1"."\r\n".
        "Upgrade: WebSocket"."\r\n".
        "Connection: Upgrade"."\r\n".
        "Origin: $local"."\r\n".
        "Host: $host"."\r\n".
        "Sec-WebSocket-Version: 13"."\r\n".
        "Sec-WebSocket-Key: $key"."\r\n".
        "Content-Length: ".strlen($login)."\r\n"."\r\n";

$sock = fsockopen($host, $port, $errno, $errstr, 30);
Avatar billede arne_v Ekspert
Skrevet i dag kl. 13:44 #1
Jeg vil foreslå at bruge et websocket client library, så du ikke selv skal håndtere alt.

https://github.com/Textalk/websocket-php

skulle være populært.

Et par tutorials:

https://piehost.com/websocket/php-websocket-client
https://tradermade.com/tutorials/your-first-php-websocket
Avatar billede nemlig Professor
Skrevet i dag kl. 15:48 #2
Tak for forslag til løsning.
Jeg kan se, at jeg skal benytte Composer, og jeg har ingen lokal PHP-server kørende. Jeg benytter et traditionel webhotel, og det er vist nok ikke helt enkelt, at få Composer installeret på webhotellet. Noget med SSH login og installation af en konsol, så der kan skrives linje-kommandoer.
Men det kigger jeg på.
Og imens kigger kigger jeg også videre i den rå programkode uden bibliotek. Jeg får måske noget eksempel fra leverandøren, der udstiller API'en til kommunikationen med de forskellige Devices.
Avatar billede arne_v Ekspert
Skrevet for 57 minutter siden #3
Du burde kunne installere PHP lokalt, køre composer lokalt og så bare uploade det af composer installerede sammen med dine egne PHP filer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester