无法使用 rosbridge 建立与 Web 服务器的连接
Can't establish connection to Web Server using rosbridge
我创建了一个简单的 HTML 页面来控制模拟 Gazebo Turtlebot 的移动,使用 roslaunch rosbridge_server rosbridge_websocket.launch
按照本教程进行操作。
但是,在 HTML 页面 (F12) 的 Web 控制台中显示错误 "Firefox cant establish a connection to the server at ws://localhost:9090/." 我正在为 websocket(9090) 使用默认的 rosbridge。在终端中我也收到错误:
[-] WebSocket 打开握手失败('WebSocket 连接被拒绝:来源 'null' 不允许')
[-] 丢弃与对等 tcp4:127.0.0.1:41290 的连接,abort=False:WebSocket 连接被拒绝:来源 'null' 不允许。
有人对我如何解决这个问题有什么建议吗?
鉴于您已遵循 ROS 教程并创建了 HTML 文件,如 Ros Bridge tutorial 所示,那么您必须 运行:
runcore
rosrun rospy_tutorials add_two_ints_server
roslaunch rosbridge_server rosbridge_websocket.launch
现在你已经准备好了 运行ning,你需要提供 html/javascript 文件(例如 simple.html)并开始服务等。例如,您可以使用 SimpleHTTPServer 为 simple.html 提供服务,请参见下面的示例(例如 simplehttpserver_test.py):
#!/usr/bin/env python
import SimpleHTTPServer
import SocketServer
class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/':
self.path = '/simple.html'
return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
Handler = MyRequestHandler
server = SocketServer.TCPServer(('127.0.0.1', 9089), Handler)
server.serve_forever()
一旦你 运行 simplehttpserver_test.py 你可以在 127.0.0.1:9089 打开浏览器并且你应该能够让它工作。
请注意,SimpleHTTPServer 提供当前目录及以下目录中的文件,直接将目录结构映射到 HTTP 请求,这意味着 simple.html 应该在与 simplehttpserver_test.py 相同(或更低)的目录中。最后,simplehttpserver_test.py 的端口应不同于 Rosbridge WebSocket 服务器 的端口(例如默认为 9090)。
我创建了一个简单的 HTML 页面来控制模拟 Gazebo Turtlebot 的移动,使用 roslaunch rosbridge_server rosbridge_websocket.launch
按照本教程进行操作。
但是,在 HTML 页面 (F12) 的 Web 控制台中显示错误 "Firefox cant establish a connection to the server at ws://localhost:9090/." 我正在为 websocket(9090) 使用默认的 rosbridge。在终端中我也收到错误:
[-] WebSocket 打开握手失败('WebSocket 连接被拒绝:来源 'null' 不允许')
[-] 丢弃与对等 tcp4:127.0.0.1:41290 的连接,abort=False:WebSocket 连接被拒绝:来源 'null' 不允许。
有人对我如何解决这个问题有什么建议吗?
鉴于您已遵循 ROS 教程并创建了 HTML 文件,如 Ros Bridge tutorial 所示,那么您必须 运行:
runcore
rosrun rospy_tutorials add_two_ints_server
roslaunch rosbridge_server rosbridge_websocket.launch
现在你已经准备好了 运行ning,你需要提供 html/javascript 文件(例如 simple.html)并开始服务等。例如,您可以使用 SimpleHTTPServer 为 simple.html 提供服务,请参见下面的示例(例如 simplehttpserver_test.py):
#!/usr/bin/env python
import SimpleHTTPServer
import SocketServer
class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/':
self.path = '/simple.html'
return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
Handler = MyRequestHandler
server = SocketServer.TCPServer(('127.0.0.1', 9089), Handler)
server.serve_forever()
一旦你 运行 simplehttpserver_test.py 你可以在 127.0.0.1:9089 打开浏览器并且你应该能够让它工作。
请注意,SimpleHTTPServer 提供当前目录及以下目录中的文件,直接将目录结构映射到 HTTP 请求,这意味着 simple.html 应该在与 simplehttpserver_test.py 相同(或更低)的目录中。最后,simplehttpserver_test.py 的端口应不同于 Rosbridge WebSocket 服务器 的端口(例如默认为 9090)。