Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用rabbitmq stomp发送protobuf(二进制)数据_Javascript_Rabbitmq_Protocol Buffers_Stomp_Content Length - Fatal编程技术网

Javascript 使用rabbitmq stomp发送protobuf(二进制)数据

Javascript 使用rabbitmq stomp发送protobuf(二进制)数据,javascript,rabbitmq,protocol-buffers,stomp,content-length,Javascript,Rabbitmq,Protocol Buffers,Stomp,Content Length,我在客户端使用protobuf.js为rabbitmq stomp创建了一个示例。 protobuf示例链接: 发送消息文件内容:- var Game = builder.build("Game"); var Car = Game.Cars.Car; var car = new Car("Rusty", "mayur"); var buffer = car.encode(); var mq_username = "guest", mq_password = "guest", mq_

我在客户端使用protobuf.js为rabbitmq stomp创建了一个示例。 protobuf示例链接:

发送消息文件内容:-

var Game = builder.build("Game");
var Car = Game.Cars.Car;
var car = new Car("Rusty", "mayur");
var buffer = car.encode();      

var mq_username = "guest",
mq_password = "guest",
mq_vhost    = "/",
mq_url      = 'http://192.168.0.14:15674/stomp',
mq_queue1 = '/queue/A3';
var client = Stomp.client(mq_url);
function on_connect() 
{

client.send(mq_queue1, { priority: 9}, buffer); 

}
window.onload = function () 
{
client.connect(
        mq_username,
        mq_password,
        on_connect,
        on_connect_error,
        mq_vhost
      );    

}
  var Game = builder.build("Game");
  var Car = Game.Cars.Car;
  var car = new Car("Rusty", "mayur");
  var buffer = car.encode();        

  var mq_username = "guest",
  mq_password = "guest",
  mq_vhost    = "/",
  mq_url      = 'http://192.168.0.14:15674/stomp',
  mq_queue1 = '/queue/A3';
  var client = Stomp.client(mq_url);
  function on_connect() 
  {
        un = client.subscribe(mq_queue1, on_message);

  }
function on_message(m) 
{
  console.log('message received'); 
  console.log(m);
  var buffer = m.body;
  alert(buffer);                     
  var carDec =Car.decode(buffer);                         
  alert(carDec.model);

}
  window.onload = function () 
  {
        client.connect(
            mq_username,
            mq_password,
            on_connect,
            on_connect_error,
            mq_vhost
          );    

  }
接收文件内容:-

var Game = builder.build("Game");
var Car = Game.Cars.Car;
var car = new Car("Rusty", "mayur");
var buffer = car.encode();      

var mq_username = "guest",
mq_password = "guest",
mq_vhost    = "/",
mq_url      = 'http://192.168.0.14:15674/stomp',
mq_queue1 = '/queue/A3';
var client = Stomp.client(mq_url);
function on_connect() 
{

client.send(mq_queue1, { priority: 9}, buffer); 

}
window.onload = function () 
{
client.connect(
        mq_username,
        mq_password,
        on_connect,
        on_connect_error,
        mq_vhost
      );    

}
  var Game = builder.build("Game");
  var Car = Game.Cars.Car;
  var car = new Car("Rusty", "mayur");
  var buffer = car.encode();        

  var mq_username = "guest",
  mq_password = "guest",
  mq_vhost    = "/",
  mq_url      = 'http://192.168.0.14:15674/stomp',
  mq_queue1 = '/queue/A3';
  var client = Stomp.client(mq_url);
  function on_connect() 
  {
        un = client.subscribe(mq_queue1, on_message);

  }
function on_message(m) 
{
  console.log('message received'); 
  console.log(m);
  var buffer = m.body;
  alert(buffer);                     
  var carDec =Car.decode(buffer);                         
  alert(carDec.model);

}
  window.onload = function () 
  {
        client.connect(
            mq_username,
            mq_password,
            on_connect,
            on_connect_error,
            mq_vhost
          );    

  }
我无法解码stomp发送的数据(protobuf二进制数据)。 如果问题通过“内容长度”解决,请指导我将“内容长度”设置为跺脚标题


请帮帮我。没人知道这件事?

我知道两年后我会回答!但我想我应该分享:)

我正在从事一个使用rabbitmq stomp发送ProtoBuf编码数据的项目

我面临着同样的问题:我可以发送,但无法在接收端解码

我只需使用另一种编码即可实现:

  • 更改:

    var buffer = car.encode();
    
    var carDec =Car.decode64(buffer);
    
    致:

  • 更改:

    var buffer = car.encode();
    
    var carDec =Car.decode64(buffer);
    
    致:


这解决了我的问题,我希望它也解决了你的问题。

@Fouad你是用base64编码的吗?