首页 > 解决方案 > 如何在 JavaScript 中从 Instatiated Parent 实例化子类

问题描述

我正在编写一个 node.js 应用程序,我从 net.Server 获得了一个 net.Socket。我正在编写一个名为 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。

标签: javascriptnode.jsclassextends

解决方案


推荐阅读