artik-sdk
Version:
SDK for developing applications for Samsung's ARTIK platform
109 lines (95 loc) • 3.73 kB
JavaScript
var artik = require('../src');
var opt = require('getopt');
var uri = "ws://echo.websocket.org/";
var test_message = 'ping';
var verify = false;
var echo_websocket_ca_root =
"-----BEGIN CERTIFICATE-----\n" +
"MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx\r\n" +
"EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT\r\n" +
"EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp\r\n" +
"ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz\r\n" +
"NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH\r\n" +
"EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE\r\n" +
"AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw\r\n" +
"DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD\r\n" +
"E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH\r\n" +
"/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy\r\n" +
"DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh\r\n" +
"GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR\r\n" +
"tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA\r\n" +
"AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE\r\n" +
"FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX\r\n" +
"WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu\r\n" +
"9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr\r\n" +
"gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo\r\n" +
"2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO\r\n" +
"LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI\r\n" +
"4uJEvlz36hz1\r\n" +
"-----END CERTIFICATE-----\n";
try{
opt.setopt("m:tv");
} catch (e){
switch (e.type) {
case "unknown":
console.log("Unknown option: -%s", e.opt);
console.log("Usage: node websocket-example.js [-m <test message>] [-t for enabling TLS] [-v for verifying CA certificate]");
break;
case "required":
console.log("Required parameter for option: -%s", e.opt);
break;
default:
console.dir(e);
}
process.exit(0);
}
opt.getopt(function (o, p){
switch(o){
case 'm':
test_message = String(p);
break;
case 't':
uri = "wss://echo.websocket.org/";
break;
case 'v':
verify = true;
break;
default:
console.log("Usage: node websocket-example.js [-m <test message>] [-t for enabling TLS] [-v for verifying CA certificate]");
process.exit(0);
}
});
var ssl_config = {
ca_cert: Buffer.from(echo_websocket_ca_root), // CA root certificate of echo.websocket.org
verify_cert: verify ? "required" : "none",
se_config : {
key_id: "ARTIK/0",
key_algo: "ecc_sec_p256r1"
}
}
var ping_period = 10000
var pong_timeout = 5000
var conn = new artik.websocket(uri, ping_period, pong_timeout, ssl_config);
conn.open_stream();
conn.on('status', function(result) {
console.log("Connect result: " + result);
if (result == "connected"){
console.log("Sending: " + test_message)
conn.write_stream(test_message);
}
else
process.exit(0);
});
conn.on('data', function(message) {
console.log("Received: " + message);
});
process.on('SIGINT', function () {
console.log("Close stream");
conn.close_stream();
process.exit(0);
});
setTimeout(function () {
console.log("Time out, close stream");
conn.close_stream();
process.exit(0);
}, 15500);