我在反应原生框架上使用简单的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;
})();
答案 0 :(得分:2)
您是否已将Gradle配置为编译与您从npm安装的版本相同的react-native版本?
例如:compile project(':ReactAndroid')
而不是com.facebook.react:react-native:0.12.+