Skip to content

Instantly share code, notes, and snippets.

@djungelorm
Created February 20, 2017 19:40
Show Gist options
  • Save djungelorm/fb09f4683d8e988eebf4da63a2e340c7 to your computer and use it in GitHub Desktop.
Save djungelorm/fb09f4683d8e988eebf4da63a2e340c7 to your computer and use it in GitHub Desktop.
'use strict'
var websocket = require('ws');
var protobufjs = require('protobufjs')
var proto = protobufjs.loadProtoFile('krpc.proto').build();
console.log('Connecting to RPC server')
let rpcConn = new websocket('ws://127.0.0.1:50000')
rpcConn.binaryType = 'arraybuffer'
rpcConn.onopen = (evnt) => {
console.log('Successfully connected')
console.log('Calling KRPC.GetClientID')
let call = new proto.krpc.schema.ProcedureCall('KRPC', 'GetClientID');
let request = new proto.krpc.schema.Request([call]);
rpcConn.send(request.toArrayBuffer());
};
rpcConn.onmessage = (evnt) => {
let response = proto.krpc.schema.Response.decode(evnt.data);
// TODO: don't do manual slice
let value = response.results[0].value;
value.readVarint32();
let client_identifier = value.toString('base64');
console.log('Client identifier =', client_identifier);
console.log('Connecting to Stream server');
let streamConn = new websocket('ws://127.0.0.1:50001?id=' + client_identifier);
streamConn.binaryType = 'arraybuffer';
streamConn.onopen = (evnt) => {
console.log('Successfully connected');
let call_to_stream = new proto.krpc.schema.ProcedureCall('KRPC', 'GetStatus');
let arg = new proto.krpc.schema.Argument(0, call_to_stream.toArrayBuffer());
let call = new proto.krpc.schema.ProcedureCall('KRPC', 'AddStream', [arg]);
let request = new proto.krpc.schema.Request([call]);
rpcConn.send(request.toArrayBuffer());
rpcConn.onmessage = (evnt) => {
let response = proto.krpc.schema.Response.decode(evnt.data);
let stream = proto.krpc.schema.Stream.decode(response.results[0].value);
console.log("added stream id =", stream.id.toString());
};
};
streamConn.onmessage = (evnt) => {
let value = new proto.krpc.schema.StreamUpdate.decode(evnt.data);
let status = proto.krpc.schema.Status.decode(value.results[0].result.value)
console.log(status);
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment