echo.py 732 Bytes
from logging import getLogger
from pyramid_rpc.jsonrpc import jsonrpc_method
from ..server import (
    ws_data,
    ws_queue,
    )


@jsonrpc_method(endpoint='rpc')
def echo(request, p):
    log = getLogger('echo')
    ip = request.remote_addr
    mem_id = id(request)
    log.info(f'{ip} {mem_id} RPC Request echo {p}')
    if p['client_id'] in ws_data:
        # Untuk websocket client seperti EDC
        d = dict(action='echo', id=0)
        ws_queue('send', p['client_id'], d)
        r = dict(code=0, message='OK')
    else:
        r = dict(code=91, message='offline')
    log.info(f'{ip} {mem_id} RPC Response {r}')
    return r


def includeme(config):
    config.add_jsonrpc_endpoint('rpc', '/rpc')
    config.scan('.')