Я пишу приложение node.js и получаю net.Socket от net.Server. Я пишу класс под названием RpcSocket:
class RpcSocket {
constructor(socket) {
this.idToAssign = 1;
this.handlers = {};
this.socket = socket;
this.socket.on('error', e => log.error('socket', e));
const incoming = JSONStream.parse();
incoming.on('data', object => {
const parsedObject = jsonrpc.parseObject(object);
switch (parsedObject.type) {
case 'request':
const response = this.handlers[parsedObject.payload.method](parsedObject.payload.id); // TODO check if it exists
socket.write(JSON.stringify(response));
break;
case 'success':
console.log('success', parsedObject.payload.result); // TODO do something useful, use the ID. Probably need to track IDs
}
});
incoming.on('error', e => log.error('incoming', e));
socket.pipe(incoming);
}
setHandler(method, func) {
this.handlers[method] = func;
}
request(method, params) {
this.socket.write(JSON.stringify(jsonrpc.request(this.idToAssign++, method, params)));
}}
В настоящее время этот класс просто берет сокет и назначает его как свойство экземпляра. Я бы хотел, чтобы RpcSocket расширял Socket. У меня проблема в том, что я не могу понять, как превратить экземпляр Socket в RpcSocket.