javascript - 向 websocket 服务器 React Native 应用程序发送/写入值
问题描述
我正在开发一个我想用于控制灯光等的应用程序。我已经在一个有效的 React Native 应用程序中实现了 Websocket(测试我已经连接到我的 websocket 服务器,localbus.lp
)。我想添加一个Button
来控制一些灯光,我已经用 HTML 测试了这个,并且可以工作。但是我怎样才能在React Native
应用程序中做同样的事情呢?
示例 HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="http://192.168.10.11/apps/js/jquery.js.gz"></script>
<script src="http://192.168.10.11/apps/js/localbus.js.gz"></script>
<script src="http://192.168.10.11/scada/vis/busdecode.js.gz"></script>
</head>
<body>
<div class="container">
<div>
<input type = "text" id= "input-get" placeholder = "Get Value">
</div>
<div>
<input type = "text" id = "input-set" placeholder = "Set Value">
</div>
</div>
<button onclick="toggle()">KONTOR</button>
<script>
localbus.init('http://192.168.10.11', 'admin:password');
var toggled = false;
function toggle(){
if(!toggled){
toggled = true;
localbus.write('1/0/4', true);
buttontext = PÅ
return;
}
if (toggled) {
toggled = false;
localbus.write('1/0/4', false);
return;
}
}
</script>
<script>
这是我在 React Native 中的 App.js:当我在浏览器中运行它时,它会打开到我的 websocket server 的连接localbus.lp
。但我不确定在哪里以及如何添加Button
与 HTML 相同的内容。
export default class App extends Component{
render(){
return(
<View style={{flex: 1}}>
<WS
ref = {ref => {this.ws = ref}}
url = "ws://admin:password@192.168.10.11/apps/localbus.lp"
onOpen = {() =>{
console.log('Open')
this.ws.send('Hello')
}}
onMessage={console.log}
onError={console.log}
onClose={console.log}
reconnect
/>
<Button>
</Button>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
解决方案
localbus 官方不支持 React Native,在开源中不存在任何 npm 包。React Native 支持 WebSocket,所以你可以尝试使用 localbusthis.ws.send()
和this.ws.onmessage
方法来实现手动工作
推荐阅读
- scala - 验证集合中的元素,为第一个无效元素返回失败
- classification - makeClassifTask 中的错误 - 要加入的列必须指定“on=”
- php - 显示实时日期
- android - 从存储访问框架 (SAF) 收到的带有 Uri 的 Android contentResolver.query
- javascript - 使用内容创建的产品图像未显示
- url-rewriting - 如何在 Yii2 中开始使用 Slug URL 而不会破坏旧版本
- c# - 如何在 EF Core 5 中为自动生成的多对多表定义 DbSet?
- python - Python 错误:未找到模块,即使在将目录添加到 PATH 之后也是如此
- algorithm - 问:按位 AND > k ~ 比 O(N^2) 更好地计算数组对?
- javascript - 如何处理导入到主组件中的 NavBar 内的搜索栏中的搜索?