在React Native中失去互联网后如何重新连接Hub?

时间:2019-09-11 16:23:59

标签: react-native signalr

当我的应用丢失并重新连接到Internet时,我无法再次连接到SignalR Hub。除非我关闭应用程序然后再次打开。

import React, { Component } from 'react';
import { StyleSheet, TouchableWithoutFeedback, Keyboard, Text, View, TouchableOpacity, Image, Alert, TextInput, FlatList, Button, RefreshControl } from 'react-native';

import * as signalR from '@aspnet/signalr';

const hubUrl = '/chatHub';
let hub = new signalR.HubConnectionBuilder()
    .withUrl(hubUrl)
    .configureLogging(signalR.LogLevel.Information)
    .build();
hub.start();

有人可以教我丢失后如何重新连接SignalR Hub吗?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在React-native中使用NetInfo

import { NetInfo } from "react-native"已过时。请改用react-native-community/react-native-netinfo

您可以运行npm install --save @react-native-community/netinforeact-native link @react-native-community/netinfo

import NetInfo from "@react-native-community/netinfo";

componentDidMount() {
    NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectionChange);

}

componentWillUnmount() {
    NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectionChange);
}

handleConnectionChange = (isConnected) => {
        this.setState({ status: isConnected });
        if (isConnected !== "none" || isConnected !== "unknown") {  
             hub.start();
        }
}

答案 1 :(得分:0)

所以我使用hub connectionState进行检查并调用hub.start()效果很好