reactjs - React Native websocket 对象在第一次尝试时未连接
问题描述
我是 react-native 和 websocket 的新手。
const client = new W3CWebSocket(
'url/api/ws/chat/1/' + logID + '/',
);
useEffect(() => {
getID();
getPrevMsgs();
client.onopen = (e) => {
console.log('WebSocket Client Connected',);
};
client.onmessage = message => {
const dataFromServer = JSON.parse(message.data);
console.log('got reply! ', dataFromServer);
if (dataFromServer) {
setMessages(messages => [
...messages,
{msg: dataFromServer.type, sender: dataFromServer.sender},
]);
}
};
scrollHandler();
return () => {
getPrevMsgs();
scrollHandler();
client.close();
};
现在正如您在上面的代码中看到的那样,问题是当我进入我的聊天屏幕时,它没有连接到 WebSocket,但是当我按下 ctrl+s 然后它连接到 websocket,我也尝试添加这一行 *const client = newW3CWebSocket ('url/api/ws/chat/1/' + logID + '/'); * 在 useEffect 中,但仍然发生同样的事情。我如何解决这个问题的原因是什么。
问题:当我来到聊天屏幕时如何自动连接websocket?
解决方案
推荐阅读
- javascript - 如何遍历对象数组并替换值es6
- twilio - 子账户用户的 Twilio A2P 10DLC Starter 品牌注册
- node.js - 如果参与者离开群组或新加入群组,为什么电报机器人不起作用?
- ios - Nativescript - 在 iOS 上检测越狱和动态检测
- python - 在 Windows 10 上运行多处理时 python 中的运行时错误
- flutter - Flutter Web--位置权限在 Safari(Mac & iOS) 上不起作用
- python - Pytorch: Building 3D Dense Network 遇到错误 Adaptive_avg_pool3d: output_size must be 3
- wordpress - 在 WooCommerce 中,我怎样才能做到让用户每个订单只能购买 1 件产品,并在特定产品上制作,每个用户只能购买一次?
- python-3.8 - 如何确认用户是否按下了pysimplegui中的按钮
- formsflow.ai - 尝试从部署-> docker 构建表单和 bpm 时数据库连接出错