为什么我在.publish()上收到“消息太大” [错误1009]?

时间:2018-12-29 01:33:23

标签: websocket ros

我可以通过rosbridge_serverroslibjs建立牢固的连接,但是,每当我致电.publish()时,Websocket都会断开并返回

我尝试调用JSON.stringify()来缩短消息大小。 我确保邮件的格式正确。

<script type="text/javascript" src="http://static.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script>
<script type="text/javascript" src="http://static.robotwebtools.org/roslibjs/current/roslib.min.js"></script>
var ros = new ROSLIB.Ros({ 
    url : 'ws://192.168.1.122:9090'
  });
var rosbridge_obj = new ROSLIB.Topic({
    ros : ros,
    name : '/topicname',
    messageType : 'topicname/messagetype'
  });
 var message_obj = new ROSLIB.Message({
    header : {
      seq : 0,
      stamp : 8768,
      frame_id : 'Redacted',
    },
    mobility : {
      ForwardY : 0,
      TurningX : 0,
    },
    arm : {
      J1 : 0,
      J2 : 0,
      J3 : 0,
      J4 : 0,
      J51 : 0,
      J52 : 0,
    },
    mode : {
      mode : 0,
    },
  });
rosbridge_obj.publish(message_obj);

预期结果是Websocket将发布并且不会关闭,但是我收到以下消息:

CloseEvent
bubbles: false
code: 1009
composed: false
 currentTarget: WebSocket {url: "ws://192.168.1.122:9090/", readyState: 3, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}
defaultPrevented: false
eventPhase: 0
isTrusted: true
path: []
reason: "message too big"
returnValue: true

2 个答案:

答案 0 :(得分:0)

我在使用roslibpy时遇到了相同的问题,我正在运行发布者的基本示例,并且在发布错误消息后立即关闭了连接:

WebSocket connection closed: Code=1009, Reason=message too big

事实证明,rosbridge_websocket.launch具有参数max_message_size,该参数默认设置为None。当我将其更改为Inf时,它开始工作。

如果您有自己的启动文件:

<include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch">
    <arg name="max_message_size" value="Inf" />
</include>

或者只是(从命令行):

roslaunch rosbridge_server rosbridge_websocket.launch max_message_size:=Inf

希望这会有所帮助,对我有帮助。

答案 1 :(得分:0)

事实证明这是硬件特定的问题。切换到新硬件后,此问题已完全解决。