function WSSHClient() {
}

WSSHClient.prototype._generateEndpoint = function () {
    let protocol = location.protocol
    let hostname = location.hostname
    let port = location.port

    let prefix;
    if (protocol === 'https') {
        if (port === 443) {
            prefix = 'wss://' + hostname;
        } else {
            prefix = 'wss://' + hostname + ':' + port;
        }
    } else {
        if (port === 80) {
            prefix = 'ws://' + hostname;
        } else {
            prefix = 'ws://' + hostname + ':' + port;
        }
    }
    return  prefix + '/webssh';
};

WSSHClient.prototype.connect = function (options) {
    let endpoint = this._generateEndpoint();
    if (window.WebSocket) {
        // 如果支持websocket
        this._connection = new WebSocket(endpoint);
    } else {
        //否则报错
        options.onError('WebSocket Not Supported');
        return;
    }

    this._connection.onopen = function () {
        options.onConnect();
    };

    this._connection.onmessage = function (evt) {
        var data = evt.data.toString();
        //data = base64.decode(data);
        options.onData(data);
    };

    this._connection.onclose = function (evt) {
        options.onClose();
    };
};

WSSHClient.prototype.send = function (data) {
    this._connection.send(JSON.stringify(data));
};

WSSHClient.prototype.sendInitData = function (options) {
    //连接参数
    this._connection.send(JSON.stringify(options));
}

WSSHClient.prototype.sendClientData = function (data) {
    //发送指令
    this._connection.send(JSON.stringify({"ops": "command", "command": data}))
}

var client = new WSSHClient();
