为什么我在 .publish() 上收到 'message too big' [错误 1009]?
Why do I receive 'message too big' on .publish() [error 1009]?
我能够通过 rosbridge_server
与 roslibjs
建立牢固的连接,但是,每当我调用 .publish()
时,Websocket 就会断开连接并且 returns
我试过调用 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
我在使用 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
希望这会有所帮助,它帮助了我。
这原来是一个特定于硬件的问题。切换到新硬件后问题已完全解决。
我能够通过 rosbridge_server
与 roslibjs
建立牢固的连接,但是,每当我调用 .publish()
时,Websocket 就会断开连接并且 returns
我试过调用 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
我在使用 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
希望这会有所帮助,它帮助了我。
这原来是一个特定于硬件的问题。切换到新硬件后问题已完全解决。