Skip to content

Improve network stack#876

Open
jcelerier wants to merge 3 commits intomasterfrom
feature/remove-websocketpp
Open

Improve network stack#876
jcelerier wants to merge 3 commits intomasterfrom
feature/remove-websocketpp

Conversation

@jcelerier
Copy link
Copy Markdown
Member

@jcelerier jcelerier commented Mar 24, 2026

  • oscquery: port to boost.beast
  • protocols: work on ipv6 support
  • protocols: add an initial socket.io implementation

TODO: make sure all tests pass.
OSCQuery publication / exploration examples seem to work fine and are compatible with the previous version.

@jcelerier jcelerier changed the title feature/remove websocketpp Improve network stack Mar 24, 2026
@jcelerier
Copy link
Copy Markdown
Member Author

jcelerier commented Mar 24, 2026

@x37v if you want to review / test this version with your stack. I need to do a bit more testing but we now have:

  • a much more modern (and consistently maintained) websocket backend, unlike websocketpp which has been abandoned for years: one commit in the last five years.
  • I tried adding ipv6 support wherever it was relevant - things work locally but so far I only tested this part under linux, need to test on windows and mac, also with various clients such as ESP32
  • the websocket implementation for oscquery is more flexible and also now supports using [socket.io](https://socket.io/ as backend) (@ogauthiersat @blueyeti) ; this opens interesting use cases with the "rooms" concept of socket.io.

@ogauthiersat
Copy link
Copy Markdown

@jcelerier I managed to build this branch into my score dev environment. However, I had to comment out all calls to boost::asio::ip::v6_only and disable vst/vst3/clap plugins that were not finding websocket_simple_client.

/home/ogauthier/git/github.com/ossia/score/3rdparty/libossia/src/ossia/protocols/socketio/socketio_server.cpp:472:42: error: no member named 'v6_only' in namespace 'boost::asio::ip'
  472 |   m_acceptor.set_option(boost::asio::ip::v6_only(false), ec);
/home/ogauthier/git/github.com/ossia/score/src/clappuppet/clappuppet.cpp:190:15: error: no type named 'websocket_simple_client' in namespace 'ossia::net'; did you mean 'websocket_simple_client_beast'?
  190 |   ossia::net::websocket_simple_client socket{{.url = "ws://127.0.0.1:37589"}, ctx};

I tested OSCQuery device, gives the same results under this branch or with release 3.8.1 :

  • Add OSCQuery device pointing at host ws://127.0.0.1:9999
  • OSCQuery device appears empty
  • Right-click QSCQuery device, Refresh namespace
  • OSCQuery device is populated normally
  • Add String process
  • String process does not appear in QSCQuery device tree
  • Right-click QSCQuery device, Refresh namespace
  • String process is available in OSCQuery tree, and modify value works

I confirm that user agent is different in the websocket setup header :

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: WHdzoMgsjebbUf6MTfY4iCsB6aQ=
Server: Boost.Beast/359

3.8.1 :

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Sec-WebSocket-Accept: RNBbeBhCRzVA8/FAE9I48Lo7LWA=
Server: WebSocket++/0.8.3-dev
Upgrade: websocket

Is there a way to test socket.io from Score at the moment ?

@x37v
Copy link
Copy Markdown
Contributor

x37v commented Mar 25, 2026

@jcelerier sorry for the slow response, pretty busy with the latest release and various tasks around that but I will get to this.

@jcelerier
Copy link
Copy Markdown
Member Author

thanks for the review @ogauthiersat ! and no worries @x37v, the branch still needs a fair bit of polishing ::)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants