在Android上反应原生websocket错误

时间:2015-11-16 07:42:17

标签: android google-chrome websocket react-native

我在反应原生框架上使用简单的Websocket连接,ios它工作得很好,但在Android上我有70%得到消息:WebSocketEvent {type: "error", message: null}这个错误正在关闭套接字连接。我不知道为什么会这样?

我的代码是:

self._ws = new WebSocket("wss://fe01-ws.wearetv.com/platform/simchacr/some_code");

    var initPing = function (){
        pingInterval = setInterval(function(){
            ping.timestamp = new Date().getTime();
            ping.sequenceNumber++;
            ping.params.timestamp = ping.timestamp;
            ping.params.sent_ts = ping.timestamp;
            ping.params.seq = ping.sequenceNumber.toString();
            self._ws.send(JSON.stringify(ping.params));
            console.log("Ping is sent");
            isPinged = false;
            pongTimeout = setTimeout(function(){
                if (isPinged === false) {
                    self._ws.close();
                }
            }, PONG_DELAY);
        }, PING_INTERVAL);
    };


    var initConnection = (function me() {
        isPinged = false;

        self._ws.onopen = function () {
            console.log("Connection opened");
            initPing();
        };
        self._ws.onerror = function(error) {
            console.error(error);
            self._ws.close();
        };
        self._ws.onclose = function() {
            console.log("Connection closed");
            clearInterval(pingInterval);
            clearTimeout(pongTimeout);
            clearTimeout(reconnectTimeout);
            reconnectTimeout = setTimeout(function(){
                console.log("Ping reconnection");
                initConnection();
                initPing();
            }, PING_RECONNECT_TIME);
            isPinged = false;
        };
        self._ws.onmessage = function (message) {
            //var data = JSON.parse(message.data);
            //console.log(data);
            //if (data[REQUEST_PROPERTY_MAIN] === "ACK") {
            //    clearTimeout(pongTimeout);
            //    clearTimeout(reconnectTimeout);
            //    isPinged = true;
            //}
            //self._getMessage(data);
        };
        return me;
    })();

1 个答案:

答案 0 :(得分:2)

您是否已将Gradle配置为编译与您从npm安装的版本相同的react-native版本?

例如:compile project(':ReactAndroid')

而不是com.facebook.react:react-native:0.12.+