下面是我的app.js:
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
TouchableHighlight,
TextInput,
Button
} from 'react-native';
import { Client, Message } from 'react-native-paho-mqtt';
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' +
'Cmd+D or shake for dev menu',
android: 'Double tap R on your keyboard to reload,\n' +
'Shake or press menu button for dev menu',
});
export default class App extends Component<{}> {
constructor(){
super();
const myStorage = {
setItem: (key, item) => {
myStorage[key] = item;
},
getItem: (key) => myStorage[key],
removeItem: (key) => {
delete myStorage[key];
},
};
const client = new Client({ uri: "wss://m12.cloudmqtt.com:31839/", clientId: 'clientIdReactNative' + (new Date()).getTime(), storage: myStorage });
client.on('messageReceived', (entry) => {
console.log(entry);
this.setState({message: [...this.state.message, entry.payloadString]});
});
client.on('connectionLost', (responseObject) => {
if (responseObject.errorCode !== 0) {
console.log(responseObject.errorMessage);
this.setState({error: 'Lost Connection', isConnected: false});
}
});
this.connect(client)
.then(() => {
console.log('connect!');
this.setState({isConnected: true, error: ''})
})
.catch((error)=> {
console.log(error);
});
this.state = {
client,
message: [''],
messageToSend:'',
isConnected: false
}
}
connect(client){
return client.connect({
useSSL: true,
userName: 'azebvdny',
password: 'MsULac9Uhig0'
})
.then(() => {
client.subscribe('S/ReactMQTT');
})
}
onConnect = () => {
const { client } = this.state;
client.subscribe('ReactMQTT');
this.pushText('connected');
};
pushText = entry => {
const { message } = this.state;
this.setState({ message: [...message, entry] });
};
onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:"+responseObject.errorMessage);
}
}
onMessageArrived(message) {
console.log("onMessageArrived:"+message.payloadString);
}
componentWillMount(){
}
sendMessage(){
var message = new Message(this.state.messageToSend);
message.destinationName = "S/ReactMQTT";
if(this.state.isConnected){
this.state.client.send(message);
}else{
this.connect(this.state.client)
.then(() => {
console.log('connect!');
this.state.client.send(message);
this.setState({error: '', isConnected: true});
})
.catch((error)=> {
console.log(error);
this.setState({error: error});
});
}
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Nativess!
</Text>
<Text style={styles.instructions}>
Message: {this.state.message.join(' --- ')}
</Text>
<Text style={{color: 'red'}}>
{this.state.error}
</Text>
{ this.state.isConnected ?
<Text style={{color: 'green'}}>
Connected
</Text> : null
}
<TextInput
value={this.state.messageToSend}
onChangeText={(value => this.setState({messageToSend: value}))}
placeholder="Type here... "
style={styles.input} />
<Button onPress={this.sendMessage.bind(this)} title="Send Message" />
</View>
);
}
}
const styles = StyleSheet.create({
...
});
任何帮助都将不胜感激。
react-native-paho-Mqtt
只支持WebSocket。
因为react-native-paho-Mqtt
不支持开箱即用的原始TCP
如果您使用real-native-tcp
来配置客户端,那么在代码上是可能的。
js prettyprint-override"> test('should fail to create a new client with an invalid ws uri', function () {
let client = null;
let error;
try {
client = new Client({ uri: 'http://example.com', clientId: 'testclientid', webSocket, storage });
} catch (err) {
error = err;
}
expect(client).toBe(null);
expect(error).not.toBe(null);
我用react-native做了一个移动应用程序(目前只有Android系统,它不是一个世博会应用程序),我想禁止用户在应用程序打开时截图。我知道这是不可能完全禁用这一点,但我想使它至少更难采取截图。我发现了一些示例,但我不知道如何实现它们,例如: 如何在Android中防止截屏 有人知道如何设置一个标志,这样我的react-native(android)应用程序的用户在使用该应用程序时就不能截图
问题内容: 我想将node js用作react native项目中的后端。 问题答案: 是的,您 可以 通过正确使用Big Rich的ReactNativify 来 使用为Node编写的包。但是要考虑一些事项: 1)我遵循在问题清单中找到的建议,并分为两部分: Transformers.js(在和中调用): babel-transformer.js(也在): 2)如您在上面的代码中所见,我还演示了
在React Native应用程序中实现以下场景的最佳方式是什么? 向服务器发出HTTP请求,获取JSON响应和ETag头 保存此JSON响应的方式即使在用户重新启动应用程序后也会持续 每当重复此HTTP请求时,发送If-None-Match头。 当您得到“未修改”响应时,请使用持久化缓存中的版本 当您得到“成功”响应(表示响应已更改)时,使持久化缓存无效,保存新响应 React Native有现
我正在尝试设置一个Java程序,其中每个线程都可以使用自己的代理。 现在我只找到了一种全局设置代理的方法。(http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html) 如前所述,这些设置会影响使用这些选项调用的VM的整个生命周期内的所有http连接。然而,使用该系统是可能的。setProperty()方法,使其具有
问题内容: 如果我的React Native应用无法连接到其后端,我会显示一个带有OK按钮的Alert。如果发生这种情况,应用程序将无法继续运行,因此我想在单击按钮时将其关闭。我该怎么做呢? 我怀疑密钥在AppRegistry中,但是文档有点匮乏。 问题答案: 今天没有反应本机的特定方法。您必须从事物的本机方面完成此任务。 此外,您正在为iOS开发吗?苹果已经表示,应用程序不应自行关闭。
我听说Dart使用自己的DartVM。因此,Flatter可以在开发应用程序时使用JIT(用于热重新加载)和AOT将后者构建为“原生”应用程序(.apk/.ipa)。 根据两个平台(Android/iOS)的文档: 提前(AOT)编译到本机ARM库中 但是,如果应用已经通过Dalvik/ART运行,那么Flatter如何在Android上使用自己的DartVM呢?虚拟机是否已内置到我们的系统中。a