投稿
开启辅助访问
 找回密码
 立即注册
取消
搜索
热搜:
活动 交友 discuz
开发者专区 + 关注 已有8人关注 发新帖
分享到

自定义WebSocket功能

#已解决#时间:2020-06-15 阅读:9413 回复:8

6

主题

15

帖子

90

积分

注册会员

Rank: 2

积分
90
咨询用法
开发相关模块: 其他
企业名称: 仅管理员可见
客户姓名: 仅管理员可见
需求 : 自定义 WebSocketProvider 进行 Websocket 连接, 是为了告诉服务器,当前机器人的实时状态使用 : 在 App.js 中 引用 该功能 <CustomWebSocketProvider viewModel={this.customWebSocketModel}/>
问题 : 打开小豹程序后,每两秒可正常进行一次消息通讯,传递和接收  ,但是 当按下  "急停按钮" 之后,发现 连接断开了,服务器接收到不当前连接的机器发送的消息

我想问一下,"急停按钮"  按下之后 开启的是哪一个页面View ,可否在 急停按钮 按下后的页面中进行消息传输,  或者  急停按下之后 自定义的消息应该怎么传输?


当前使用的WebSocket  为 https://github.com/pladaria/reconnecting-websocket




回复
使用道具 举报

35

主题

132

帖子

1477

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1477
admin| 2020-6-15 11:15:59 | 显示全部楼层
急停逻辑属于系统安全逻辑,急停以后全部业务活动强行终止。 你看到的反应属于正常设计。
回复
使用道具 举报

6

主题

15

帖子

90

积分

注册会员

Rank: 2

积分
90
SHne| 2020-6-15 11:27:31 | 显示全部楼层
admin 发表于 2020-6-15 11:15
急停逻辑属于系统安全逻辑,急停以后全部业务活动强行终止。 你看到的反应属于正常设计。
...

您好,  如果 我在急停按钮 按下 之后  可否有别的方法 可以把当前机器人状态信息  发送给后台   发送消息  格式 为
{
  "remainPower":"87%",
  "currentTask":"充电",
  "location":"前台",
"charge":false,
"emergencyStopButton":true,
"navigation":false,
"monitoring":false
}
回复
使用道具 举报

0

主题

33

帖子

146

积分

注册会员

Rank: 2

积分
146
smith tuo| 2020-6-15 16:37:50 | 显示全部楼层
SHne 发表于 2020-6-15 11:27
您好,  如果 我在急停按钮 按下 之后  可否有别的方法 可以把当前机器人状态信息  发送给后台   发送消息 ...

你好,是不是想在急停按下后继续当前业务?如果是这样的话可以如下实现
首先,关闭急停系统接管接口

  1. RobotApi.disableEmergency()
复制代码

其次,获取急停状态接口自行处理急停逻辑,业务不会中断

  1. RobotApi.getEmergencyStatus(callbackId)
复制代码

(callbackId 参考 CommandListener使用)
文档链接:https://dev.ainirobot.com/doc/85894be0ad4f11e987197dd7c45ba905
回复
使用道具 举报

6

主题

15

帖子

90

积分

注册会员

Rank: 2

积分
90
SHne| 2020-6-15 18:03:09 | 显示全部楼层
smith tuo 发表于 2020-6-15 16:37
你好,是不是想在急停按下后继续当前业务?如果是这样的话可以如下实现
首先,关闭急停系统接管接口

您好   如上所说  增加RobotApi.disableEmergency() 方法之后

  RobotApi.getEmergencyStatus(-1).then((result: any) => {

            console.warn('App', '急停按钮 : ' + result);

        });

result 的 值 还是 0  
急停按钮开启的和按下 这个 result 都是 0   

问: 我该如何得知 当前机器人 的 急停按钮 被按下 , 是否有相关方法?
比如 :   
当前是否正在充电   RobotInfo.isCharging
当前急停按钮是否按下  RoborInfo.xxxxxxxx
回复
使用道具 举报

0

主题

33

帖子

146

积分

注册会员

Rank: 2

积分
146
smith tuo| 2020-6-16 15:11:51 | 显示全部楼层
本帖最后由 smith tuo 于 2020-6-16 15:49 编辑
SHne 发表于 2020-6-15 18:03
您好   如上所说  增加RobotApi.disableEmergency() 方法之后

  RobotApi.getEmergencyStatus(-1).then( ...

.then返回的不是执行结果

  1. const listener = new CommandListener();
  2. listener.addListener(CommandListener.EVENT_RESULT, (data: any) => {
  3.   // 在这里处理结果
  4.   console.log('send event');
  5. });
  6. listener.addListener(CommandListener.EVENT_ONFINISH, (data: any) => {
  7.   console.log('EVENT_ONFINISH ', data);
  8. });
  9. listener.addListener(CommandListener.EVENT_STATUSUPDATE, (data: any) => {
  10.   console.log('EVENT_ONFINISH ', data);
  11. });
  12. RobotApi.getEmergencyStatus(listener.getId());

复制代码





回复
使用道具 举报

53

主题

127

帖子

997

积分

版主

Rank: 7Rank: 7Rank: 7

积分
997
wuqimeng| 2020-6-19 17:41:32 | 显示全部楼层
SHne 发表于 2020-6-15 18:03
您好   如上所说  增加RobotApi.disableEmergency() 方法之后

  RobotApi.getEmergencyStatus(-1).then( ...

请问下 进展如何?问题是否得到解决?
回复
使用道具 举报

6

主题

15

帖子

90

积分

注册会员

Rank: 2

积分
90
SHne| 2020-6-19 17:55:51 | 显示全部楼层
wuqimeng 发表于 2020-6-19 17:41
请问下 进展如何?问题是否得到解决?

您好 ,  
经过测试上诉方法可以得到回调监听  但是

  const listener = new CommandListener();
          listener.addListener(CommandListener.EVENT_RESULT, (data: any) => {
              // 在这里处理结果
              console.warn('send event'+JSON.stringify(data));

这个data在急停按钮按下和打开的时候值没有变化

          });
          listener.addListener(CommandListener.EVENT_ONFINISH, (data: any) => {
              console.warn('EVENT_ONFINISH ', JSON.stringify(data));
          });
          listener.addListener(CommandListener.EVENT_STATUSUPDATE, (data: any) => {
              console.warn('EVENT_ONFINISH ', JSON.stringify(data));
          });

        RobotApi.getEmergencyStatus(listener.getId()).then((result)=>{
            console.warn('急停按钮 ', result);

        });

我想要的结果 是   急停按钮是否按下  是状态信息  false或者true, 我可能不需要 接收到按下的监听
回复
使用道具 举报

0

主题

33

帖子

146

积分

注册会员

Rank: 2

积分
146
smith tuo| 2020-6-22 18:50:29 | 显示全部楼层
SHne 发表于 2020-6-19 17:55
您好 ,  
经过测试上诉方法可以得到回调监听  但是

经与系统组同事交流及测验,目前有关急停的功能因为牵涉安全问题所以不支持二次开发,因此RobotApi.getEmergency方法无预期返回。若必须使用该功能,请联系售前提出需求。
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

    0

    主题

    33

    帖子

    146

    积分

    注册会员

    Rank: 2

    积分
    146

发私信

TA 的相关文章

    官方微信
    发布 快速回复 返回顶部 返回列表