To view the full example take a look here.
Server example
Include required headers:
Register services and start server:
int main(int argc, char *argv[])
{
int ret;
if (argc != 2) {
fprintf(stderr, "ERROR: Missing argument or wrong amount of arguments.\n" \
"Usage:\n\t%s <port>\n", argv[0]);
return -1;
}
if (ctx == NULL) {
fprintf(stderr, "ERROR: Failed to create japi context\n");
return -1;
}
return ret;
}
Client request example
29 def process_request(cmd_request,sock):
30 json_cmd = json.dumps(cmd_request) +
"\n"
31 sock.sendall(json_cmd.encode())
33 resp = sock.recv(4096)
37 print(json.dumps(json.loads(resp.decode(
"utf-8")), indent=4))
45 sock = socket.create_connection((IP, TCP_PORT))
46 except socket.error
as e:
47 if e.errno != errno.ECONNREFUSED:
48 print(
"Exception was thrown. Message is %s" % (e))
50 print(
"A connection to '%s:%d' could not be established." %(IP, TCP_PORT))
54 "japi_request":
"get_temperature",
55 "args": {
"unit":
"kelvin"},
57 push_service_request = {
58 "japi_request":
"japi_pushsrv_list",
60 push_temperature_request_subscr = {
61 "japi_request":
"japi_pushsrv_subscribe",
62 "args": {
"service":
"push_temperature"},
64 push_temperature_request_unsubscr = {
65 "japi_request":
"japi_pushsrv_unsubscribe",
66 "args": {
"service":
"push_temperature"},
69 process_request(cmd_request,sock)
70 process_request(push_service_request,sock)
71 process_request(push_temperature_request_subscr,sock)
76 resp = sock.recv(4096)
78 for n, line
in enumerate(sock.makefile(), start=1):
81 jdata = json.loads(line)
82 print(json.dumps(json.loads(line), indent=4))
88 process_request(push_temperature_request_unsubscr,sock)
92 if __name__ ==
"__main__":