I’m wrapping libwebsockets in Julia for better integration and performance. Unfortunately, I didn’t find it in JuliaBinaryWrappers. After that i want to introduce simpler analogue for HTTP.jl based on this c lib (previously i tried libcurl, however, there is no websocket support). Do you have any advices? This is my first time wrapping lib myself (before that I used libCurl_jll)
I’m sure that the right thing to do is to use something like Clang.jl to generate the wrapper for you. I don’t know much about it, even though I have drug my eyes over the documentation a few times.
If you are mildly masochistic, you can write Julia analogs of the structures used, and call all of the library functions from Julia using @ccall
. I have a semi-large-ish C++ library that I have wrapped that way. I don’t have any experience with libwebsockets
, but it looks semi-large. Probably large enough to make fussing around with Clang worthwhile.
Here is my example code (in this Discourse link). Since you are wrapping C, you wouldn’t need to have a C library wrapper layer. I do recommend that you get bindings autogenerated, rather than doing it manually though.
You may be right - I haven’t successfully used Clang.jl before.
Also, have you seen: GitHub - JuliaWeb/WebSockets.jl: A WebSockets library for Julia?
Both are kind of necessary steps. I prefer doing the binarybuilder one first because it tends to make the following steps a lot easier though nothing stops you from building the wrapper with a local build.