websocket 无法使用rosbridge建立到Web服务器的连接

fykwrbwg  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(485)

我已经创建了一个简单的HTML页面来控制一个模拟的Gazebo Turtlebot的移动,使用roslaunch rosbridge_server rosbridge_websocket.launch遵循本教程。
然而,在HTML页面(F12)的Web控制台中,它显示错误“Firefox无法建立到位于ws://localhost:9090/的服务器的连接”。我正在使用WebSocket(9090)的默认rosbridge。在终端中,我也收到错误:
[-]WebSocket打开握手失败('WebSocket连接被拒绝:不允许原点为“null ")
[-]正在断开与对等tcp 4:127.0.0.1:41290的连接,abort=False:WebSocket连接被拒绝:不允许原点为'null'。
有人对我如何解决这个问题有什么建议吗?

628mspwn

628mspwn1#

假设您已按照ROS教程进行操作并创建了Ros Bridge tutorial中所示的HTML文件,则必须运行:

  • runcore
  • rosrun rospy_tutorials add_two_ints_server
  • roslaunch rosbridge_server rosbridge_websocket.launch

现在您已经启动并运行了这些文件,您需要提供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服务当前目录及以下目录中的文件,直接将目录结构Map到HTTP请求,这意味着 simple.html 应该与 simplehttpserver_test.py 位于同一目录(或以下目录)中。最后,simplehttpserver_test.py 的端口应该与 *Rosbridge WebSocket服务器 * 使用的端口不同(例如,默认值为9090)。

相关问题