javascriptrsocket

How do I add headers to Rsocket metadata - JavaScript?


Javascript side, How do I add Accept-Language header to Rsocket stream? I need to add this somehow to the metadata but I can't find documentation for it

this is my setup:

    setup: {
      keepAlive: 25000,
      lifetime: 180000,
      dataMimeType: APPLICATION_JSON.string,
      metadataMimeType: MESSAGE_RSOCKET_COMPOSITE_METADATA.string
    },
    transport: new RSocketWebSocketClient({
      url: `my url`
    }, BufferEncoders)
  }


const metadata = encodeAndAddWellKnownMetadata(
    Buffer.alloc(0),
    MESSAGE_RSOCKET_ROUTING,
    routeMetadata
  );

  _socket.requestStream({
    data: Buffer.from(JSON.stringify(data)),
    metadata,
  }).subscribe({
    onNext: (payload) => receivedData(payload.data),
    onError: (error) => console.log(error),
    onSubscribe: (subscription) => subscription.request(MAX_STREAM_ID),
  });

Solution

  • Got it, In the request stream, add to metadata:

    const metadata = encodeAndAddWellKnownMetadata(
        encodeAndAddCustomMetadata(
          Buffer.alloc(0),
          "message/accept-language",
          Buffer.from("en-US"),
        ),
        MESSAGE_RSOCKET_ROUTING,
        routeMetadata,
      )
    
      _socket.requestStream({
        data: Buffer.from(JSON.stringify(data)),
        metadata,
      }).subscribe({
        onNext: (payload) => receivedData(payload.data),
        onError: (error) => console.log(error?.source),
        onSubscribe: (subscription) => subscription.request(MAX_STREAM_ID),
      });