ofxSocketIO is an ofxaddon that wraps socket.io-client-cpp. It is still under active development.
ofxSocketIO provides the compiled libraries for osx, linux64 (x86_64), linuxaarch64 (64-bit ARM: Raspberry Pi OS 64-bit, ARM servers) and linuxarmv6l out of the box. If you have to compile socket.io-client-cpp yourself, follow the installation instructions.
socket.io-client-cpp compiles with SSL support by default. However, we had issues with certificates and thus removed the SSL support. The provided libs (osx and linux64) does not support TLS/SSL.
FYI, we simply removed the find_package(OpenSSL) call in the CMakeLists.txt.
The linux64 and linuxaarch64 libraries (socket.io-client-cpp and the Boost libraries it uses) are static and built with -fPIC, so apps link as PIE, the default on current distros. They're built on Ubuntu 18.04 and link on any newer distro. To rebuild them with Docker:
scripts/build_socketio_linux.sh # both
scripts/build_socketio_linux.sh arm64 # or amd64addon_config.mk lists the Linux libraries in link order (socket.io-client before Boost).
Take a look at our example.
You'll need a socket.io server to communicate with. (check out our test server)
→ Creates a websocket connection with the address remote.
→ Binds an ofEvent to string trigger. Typically, you'd do:
std::string eventName = "server-event";
socketIO.bindEvent(serverEvent, eventName);
ofAddListener(serverEvent, this, &ofApp::onServerEvent);
void ofApp::onServerEvent (ofxSocketIOData& data) {
// Will be triggered when the server emits a "server-event" event
// See the `ofxSocketIOData` API on how to use the `data` parameter here
}→ Returns the current status. Either connected, closed, reconnecting or errored.
→ An ofEvent triggered when the socket is connected to the server
→ An ofEvent triggered when the socket is connected, closed, errored, or when the socket is trying to reconnect. Comes with std::string status parameter.
→ Emits an event with the specified event name and a string parameter (you'll have to cast your non-string datas).
→ Force closes the socket.
→ Get the std::string value for the specified key.
→ Get the int value for the specified key.
→ Get the float value for the specified key.
→ Get the double value for the specified key.
→ Get the bool value for the specified key.
→ Get the raw vector if the message is not a map.
You may experience issues with 'ping' and 'pong' events, as they are used internally by socket.io:
- `ping`. Fired when a ping packet is written out to the server.
- `pong`. Fired when a pong is received from the server.
ofxSocketIO is maintained by Soixante circuits and hugohil.
It exists thanks to the great work of the socket.io-client-cpp contributors.
These folks have made some useful contributions to ofxSocketIO too: