Question

Apologies for pasting so much code, this might be useful to highlight the issue:

Client.prototype.connect = function (login, passcode, connectCallback, errorCallback, vhost) {
        var _this = this;
        this.connectCallback = connectCallback;
        if (typeof this.debug === "function") {
            this.debug("Opening Web Socket...");
        }
        this.ws.onmessage = function (evt) {
            var arr, c, data, frame, onreceive, _i, _len, _ref, _results;
            data = typeof ArrayBuffer !== 'undefined' && evt.data instanceof ArrayBuffer ? (arr = new Uint8Array(evt.data), typeof _this.debug === "function" ? _this.debug("--- got data length: " + arr.length) : void 0, ((function () {
                var _i, _len, _results;
                _results = [];
                for (_i = 0, _len = arr.length; _i < _len; _i++) {
                    c = arr[_i];
                    _results.push(String.fromCharCode(c));
                }
                return _results;
            })()).join('')) : evt.data;
            _this.serverActivity = Date.now();
            if (data === Byte.LF) {
                if (typeof _this.debug === "function") {
                    _this.debug("<<< PONG");
                }
                return;
            }
            if (typeof _this.debug === "function") {
                _this.debug("<<< " + data);
            }
            _ref = Frame.unmarshall(data);
            _results = [];
            for (_i = 0, _len = _ref.length; _i < _len; _i++) {
                frame = _ref[_i];
                switch (frame.command) {
                    case "CONNECTED":
                        if (typeof _this.debug === "function") {
                            _this.debug("connected to server " + frame.headers.server);
                        }
                        _this.connected = true;
                        _this._setupHeartbeat(frame.headers);
                        _results.push(typeof _this.connectCallback === "function" ? _this.connectCallback(frame) : void 0);
                        break;
                    case "MESSAGE":
                        onreceive = _this.subscriptions[frame.headers.subscription];
                        _results.push(typeof onreceive === "function" ? onreceive(frame) : void 0);
                        break;
                    case "RECEIPT":
                        _results.push(typeof _this.onreceipt === "function" ? _this.onreceipt(frame) : void 0);
                        break;
                    case "ERROR":
                        _results.push(typeof errorCallback === "function" ? errorCallback(frame) : void 0);
                        break;
                    default:
                        _results.push(typeof _this.debug === "function" ? _this.debug("Unhandled frame: " + frame) : void 0);
                }
            }
            return _results;
        };
        this.ws.onclose = function () {
            var msg;
            msg = "Whoops! Lost connection to " + _this.ws.url;
            if (typeof _this.debug === "function") {
                _this.debug(msg);
            }
            _this._cleanUp();
            return typeof errorCallback === "function" ? errorCallback(msg) : void 0;
        };
        return this.ws.onopen = function () {
            var headers;
            if (typeof _this.debug === "function") {
                _this.debug('Web Socket Opened...');
            }
            headers = {
                "accept-version": Stomp.VERSIONS.supportedVersions(),
                "heart-beat": [_this.heartbeat.outgoing, _this.heartbeat.incoming].join(',')
            };
            if (vhost) {
                headers.host = vhost;
            }
            if (login) {
                headers.login = login;
            }
            if (passcode) {
                headers.passcode = passcode;
            }
            return _this._transmit("CONNECT", headers);
        };
    }

IE8 giving me error 'Object doesn't support this property or method' for this line: _this.serverActivity = Date.now();. I'll appreciate if someone can shed some light on this?

Was it helpful?

Solution

IE8 doesn't have Date.now, which was added in ES5 (so, relatively recently). You can add it:

if (!Date.now) {
    Date.now = function() {
        return +new Date();
    };
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top