Skip to content

Dev_Protocols

Mehmet Emre Çakal edited this page Oct 10, 2024 · 3 revisions

RosBridgeClient Protocols

RosBridgeClient is designed to keep the communication protocol generic. New protocols can be added by implementing a simple and minimalistic

IProtocol interface:

public interface IProtocol
{
    void Connect();
    void Close();
    bool IsAlive();
    void Send(byte[] data);
    event EventHandler OnReceive;
}

A RosSocket is instantiated by passing in the IProtocol interface implementation that you want to use.

Example:

string uri = "ws://xxx.xxx.xxx.xxx:9090";
RosSocket rosSocket = new RosSocket(new RosBridgeClient.Protocols.WebSocketNetProtocol(uri));

Though ROS# currently comes with two WebSocket-based IProtocol implementations, note that an IProtocol does not necessarily need to be a WebSocket client.

Currently existing IProtocol interface implementations:

A WebSocket client that is based on the .NET ClientWebSocket class.

  • Available since .NET Framework 4.6 / Net Standard 1.3 and will work with .NET Core 8.0
  • Requires System.Threading.Channels

A wrapper for WebSocketSharp-NetStandard.

  • The original WebSocket client used in ROS#
  • Requires additional assembly websocket-sharp.dll
  • Not compatible with e.g. UWP

A WebSocket client for UWP using Windows.NetWorking.Sockets.

  • Not included in the main repo, a running ROS# version with this protocol is hosted on @dwhit 's fork.

Platform Compatibility Overview:

Platform WebSocketNetProtocol WebSocketSharpProtocol WebSocketUWPProtocol
Windows 7 no yes no
Windows 8+ yes yes no
Ubuntu ? yes no
UWP no no yes
iOS ? yes no

If you tested a protocol on a new platform, and can contribute with new info in above table, please do!


© Siemens AG, 2017-2024

Clone this wiki locally