Почему я получаю сообщение «слишком большое» на .publish () [ошибка 1009]? - PullRequest
0 голосов
/ 29 декабря 2018

Я могу установить надежное соединение через rosbridge_server с roslibjs, однако всякий раз, когда я звоню .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 голосов
/ 17 марта 2019

Это оказалось аппаратной проблемой.Проблема была полностью решена после перехода на новое оборудование.

0 голосов
/ 12 февраля 2019

Я столкнулся с той же проблемой, используя 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

Надеюсь, это поможет, это помогло мне.

...