javascript - 通过 QiMessaging JavaScript 连接到虚拟机器人
问题描述
我想在本地测试我的 Javascript 应用程序。
因此,我想在我的带有 QiMessaging 的 JavaScript 应用程序与虚拟机器人之间建立连接。
以前有人做过吗?
这甚至可能吗?
作为虚拟机器人,我在 Windows 10 系统上尝试了 naoqi-bin.exe 和 opennao vm。
通过连接到虚拟机器人不起作用,它可以与真正的机器人(Pepper)一起正常工作。
这是我的尝试:
qimessaging 1.0:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script src="libs/qimessaging/1.0/qimessaging.js"></script>
<script type="text/javascript">
var robot_address = '127.0.0.1'
var session = new QiSession(robot_address);
session.socket().on('connect', function () {
console.log('QiSession connected!');
// now you can start using your QiSession
}).on('disconnect', function () {
console.log('QiSession disconnected!');
});
</script>
</body>
</html>
结果:
浏览器控制台显示:
404 未找到 http://127.0.0.1/libs/qimessaging/1.0/socket.io/1/?t=1557305266224
跨域请求被阻止:同源策略不允许在http://127.0.0.1/libs/qimessaging/1.0/socket.io/1/?t=1557305266224读取远程资源原因:原因:CORS 标头“访问控制” -Allow-Origin 缺失
qimessaging 2.0:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script src="libs/qi/2/qi.js"></script>
<script type="text/javascript">
var robot_address = '127.0.0.1'
QiSession(function (session) {
console.log("connected!");
// you can now use your QiSession
}, function () {
console.log("disconnected");
},
robot_address);
</script>
</body>
</html>
结果:
与 qimessaging 1.0 相同
机器人工具:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script src="js/robotutils.js"></script>
<script type="text/javascript">
RobotUtils.robotIp = "127.0.0.1"
RobotUtils.onService(function (ALDialog) {
console.log("Connected the service.")
}, function () {
console.log("Failed to get the service.")
})
</script>
</body>
</html>
结果:
GET http://127.0.0.1/libs/qimessaging/2/qimessaging.js 404 未找到
来自“<a href="http://127.0.0.1/libs/qimessaging/2/qimessaging.js" rel="nofollow noreferrer">http://127.0.0.1/libs/qimessaging/2/qimessaging 的脚本。即使它的 MIME 类型(“text/html”)不是有效的 JavaScript MIME 类型,js”也已加载。
使用源“<a href="http://127.0.0.1/libs/qimessaging/2/qimessaging.js" rel="nofollow noreferrer">http://127.0.0.1/libs/qimessaging/2 加载失败/qimessaging.js”。
所以我的解释是虚拟机器人不提供所需的文件,或者我在这里遗漏了什么?
解决方案
好的,我在毕宿五论坛找到了答案
[...]
抱歉,qimessaging javascript 不能与虚拟机器人一起使用,只能与真实机器人一起使用(在真实机器人上,有一个服务器正在侦听某个端口以进行 qimessaging js 通信,没有为虚拟机器人运行这样的服务器)。
[...]
推荐阅读
- python - 如何在 if 语句中设置变量?
- python - Ansible Python Interpreter 显示不同的版本
- amazon-web-services - 未收到推送通知 - AWS SNS 和 Expo
- c# - 在微服务架构中运行的资源密集型模拟
- python - 我正在使用 python 读取一个 csv 文件,我想从 csv 文件(PYTHON)中获取具有正值的行
- c++ - 从派生的直接对象间接调用非重写基方法中的虚拟方法时是否执行 vtable 查找?
- javascript - 为数组中的所有值设置相同的键
- node.js - 处理带有大量 mysql 更新的套接字连接的最佳方法
- c# - 如何 Nullable.GetUnderlyingType 而不会遇到可能的空引用问题
- html - 需要打开一个链接(这是表中的一个条目),检索/抓取数据,返回上一页,使用 Python 3、selenium 和 xpaths 在循环中重复