Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add websocket support #236

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Add websocket support #236

wants to merge 1 commit into from

Conversation

gre-42
Copy link

@gre-42 gre-42 commented Jun 21, 2021

Issue or RFC Endorsed by Maintainers

Enable WebSockets #20.

Description of the Change

Added websocket support.

Alternate Designs

Extending the existing http_resource class was considered, but rejected in favor of a new class and multiple inheritance.

Possible Drawbacks

libmicrohttpserver does not yet compile the websocket-support by default. It must be done by building libmicrohttpd/src/microhttpd_ws.

Verification Process

Created and tested an example application hello_world_websocket.cpp under Ubuntu 20.04.

Release Notes

Added support for websockets.

@nawaz1991
Copy link

@etr , @gre-42 ,
Any ETA of merging this PR.
PS: I am using libhttpserver in my project for a REST server and planning to consume websocket in as well in next phase.

@etr
Copy link
Owner

etr commented Sep 10, 2021

Sorry for the lack on feedback and thanks for the support and for the code contribution.

I think the main reason I cannot go with this change as is currently wired is that it uses a custom version/configuration of libmicrohttpd without making it optional. I think that needs to be solved before we can merge this change - many consumers of the library use libmicrohttpd as installed by their OSes and this would practically break their builds entirely.

@nawaz1991
Copy link

Sorry for the lack on feedback and thanks for the support and for the code contribution.

I think the main reason I cannot go with this change as is currently wired is that it uses a custom version/configuration of libmicrohttpd without making it optional. I think that needs to be solved before we can merge this change - many consumers of the library use libmicrohttpd as installed by their OSes and this would practically break their builds entirely.

Thanks for the quick reply.

@jvo203
Copy link

jvo203 commented Jan 22, 2024

Whilst I appreciate concerns for the existing user base, change is inevitable. It is called progress. Existing projects relying on libmicrohttpd would need to update / re-compile their code. Just like all the other open-source projects do when there are API breaks in their codebases and / or dependencies.

I've been a faithful libmicrohttpd user for nearly 10 years. It is just great, the API is ergonomic, the MHD_create_response_from_pipe() function is much appreciated too. But the lack of WebSocket support has always forced me into "clunky" hybrid solutions: for example right now using libmicrohttpd on port 8080 to handle HTTP and a separate thread running the C mongoose library on port 8081 to handle WebSockets. Dealing with two different C APIs as well as frequent changes in the C mongoose API (change is inevitable but hopefully not too frequently!). Not ideal at all.

@jvo203
Copy link

jvo203 commented Jan 22, 2024

Verification Process

Created and tested an example application hello_world_websocket.cpp under Ubuntu 20.04.

Hi are there any plans to provide a C-only WebSocket example? My project uses FORTRAN and pure C with no C++ whatsoever.

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.

4 participants